Well it all depends on what you intend to do... Honestly, a solid programing background is your best bet...
I'd recommend that if you intend to be mallitious with programs, that you learn about C++, TCP/IP, Windows, etc.
Which OS is better, well, that lies on the user; I'd recommend studying up on Linux (along with C++ and TCP/IP); you'll find plenty of scripts on our affiliate site PacketStorm
(a lot of which no longer work, but they'll show you coding examples).
If you intend to "test vulnerabilities with web servers and web scripts" then I'd highly recommend you learn PHP (and possibly ASP as well).
It's a long road, but a solid coding background is definately helpful more than much else.