To start programming video games, you should have knowledge of following tools
Programming Languages (For game logic)
1. C++
2. Java
3. C#
C++ is used by many game programmers. C# is also a good language to start. These languages are used to create a game's logic like physics, AI (Artificial Intelligence), collision detection, input controllers, score calculation etc.
APIs or Frameworks
1. DirectX
2. OpenGL
3. UDK
4. XNA
You can create your own framework or game engine otherwise use any of the above free APIs. Most PC games are build using DirectX because it provides great features ranging from input, sound, multiplayer, graphics etc.Whereas OpenGL provides less features as compared to DirectX but can be used for learning.
UDK is a free version of very popular game engine UnrealEngine 3( UE3 ). UE3 was used to create blockbuster video game like Batman Arkham Asylum.
Other great framework for creating PC,XBOX 360 & Zune video games is XNA Game Studio 3.1. XNA 4.0 also provides capability of creating Windows Phone 7 games. It is a good option for starting game programming.
Scripting Languages
1. Lua
2. unrealScript
Scripting languages are used to change your game's functions after creating it.
All of the above tools are free for learning but some require a license for commercial development. Below are the links to download these tools :
DirectX : http://msdn.microsoft.com/en-us/directx/aa937788.aspx
OpenGL:http://developer.download.nvidia.com/SDK/10.5/opengl/NVIDIA_SDK10_OpenGL_10.52.0808.1735.exe
UDK : http://www.udk.com/download
XNA : http://creators.xna.com/en-US/downloads