Does the value of the key array(T) have to be in this range [0-255] if yes could you please specify why?
Yes. RC4 operates on bytes. There are 256 possible values for an 8 bit (1 byte) number, that range from 0 to 255. RC4 treats the key as an array of bytes, so every entry in the key array is by definition in the range 0 to 255.
Why did they use s[t] to generate the key and not the key array which is defined as t array in RC4?
Without seeing the RC4 code you are referring to, it is hard to tell what you mean. $S$ is a keyed permutation (where the key is $T$) of the bytes in the range 0-255. The T array may not contain all bytes since it is generated by the user. So, in order to make it so that the values output as the keystream can be the entire range of byte values, they have to use $S$ instead of $T$.
I want to develop the RC4 algorithm to be more secure
Bruce Schneier once noted: "Again, I repeat the saying I've heard came from inside the NSA: 'Attacks always get better; they never get worse.'"
The most recent news on an RC4 attack had this to say: "The researchers said the only reliable countermeasure is to stop using RC4 altogether." (emphasis added)
A number of attacks on RC4 have been published in recent years, and, they are only getting better. A lot of folks are removing RC4 completely from older systems.
I want to point something out that I hope you don't skip over. Any sort of system designed these days should be designed in such a way that it is not cipher specific. In other words, if you really want your system to be "more secure", you should design it in such a way that it can theoretically support any cipher. That way, if one cipher gets broken, your system can easily adapt to a new one that isn't broken. If you are willing to share more details about your system, I think we can help you design it in such a way that this is possible. Likely that will mean using existing standards, or only slightly modifying a standard to fit your needs.