The difference between programming games as compared to business programming (client/server stuff) is that gaming is real-time based, whereas the other is request/response/event based.
This represents a completely different programming approach and mind set. In gaming you have a tight run-loop that needs to calculate and render the graphics >30 times per second while also updating physics model and handle input from the user. All this while continuously loading complex assets (3D-models, textures and sounds) from file or network.
This means your code must be able to do all this within 0.03 seconds for the game to run smoothly. So your code must be able to it's calculations step-wise using integration.
For skills, you need to know your C/C++ and also cannot be afraid of math (linear algebra).
It is also very important to keep performance in mind. For instance, if you have a game world which simply cannot fit in RAM. Imagine an outside gaming world where objects far away in the horizon would be rendered as just a few pixels, yet they may consist of thousands of polygons. You cannot render these because of CPU or RAM limitation, so you must figure out a way to make them simpler depending on distance to the camera. Or for that matter, you don't need to render stuff inside a house if the camera is looking at it from the outside (unless you can see through windows, in which case you must be even more clever). This is called culling and is just one area of problem one faces when programming games.
Then we have sound processing, physics calculations, 3D model loading, animations, particle effects, lightning, HUD, collisions ...