This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Games developed in C#, C++ or Java (assuming you have a JVM) will all run under Windows. What you study and use depends on what type of games you want to develop. If you want to create an FPS, you'll want to use C++ and an SDK like DirectX and/or XNA. If you want to create a puzzle-type game, pretty much any language will work. A 2D side-scroller can also be done in almost any language, but doing it in Java will make it cross-platform.
There is really no "best" tool or language. "Best" is very subjective and changes on what you want to create. Games is a very broad category of software applications and there are dozens of kinds of games that can be created. There is no "best" tool or language for ALL games. Please specify what TYPE of games you want to create, and maybe you'll get a better answer.
Also consider using a game engine. There are many free ones and some low-cost commercial ones (Torque, Torque 2D). Once you understand a language fairly well, using a game engine can alleviate some of the headaches associated with throwing up graphics on the screen and shooting sound out the speakers. But keep in mind that created a commercial-quality games these days normally takes a team of people, each expert in a specific discipline (2D art, 3D models, physics, AI, 3D graphics, design, etc.). Leaning game program is a fine endeavor, but don't get discouraged if your early efforts don't look professional.
In the meantime, please specify what types of games you want to create.
"What you are good at is not as important as being good at something." --Robert B.Parker