Like what liuyang said, there are lots of different kinds of positions in game developing. . You can program graphics, physics, input, networking, audio, gameplay, level design, AI... there are so many parts of a team. Of course, you can program a game by yourself. But, that would take a lot of stress and time.
I would advise you to first pick a target platform.
If it is Windows, use DirectX.
If it isn't Windows, use OpenGL.
Of course, you can use OpenGL for Windows, but that is all your choice. I am a DirectX person myself, but I have seen OpenGL and it is pretty much the same idea, just a different framework.
From here, find some tutorials or buy a book on whatever you pick. There are dozens and dozens of books on each library.
You can always use a prebuilt engine like Unity or Unreal.
Just in case you didn't see NoXzema, I did put that.
Really it is a matter of choice. I tried both before stepping into anything with them, and since I learned Win32 what seems like forever ago, DirectX was my choice
As others have mentioned there is various different aspects in game development. Usually game developers have a general knowledge of most of the different aspects but mainly specialize in a single aspect. Well at least this is true when you talk about bigger game projects and game studios.
So while it is best to have a general knowledge of at least the basics of most of the aspects of game development, you are going to generally want to specialize in a single thing (Though there is generalists that can work on any part of the game).
So my advice try and find a certain aspect of game development that you really like and pursue that. If you are just beginning you will of course need to get the hang of the basics of everything first but after that start to dig into the advanced topics of that aspect of game development that you love.
Graphics Programmer - Generally they deal in low level graphics stuff and make he graphics API that others use.
Generalist Programmer - As mentioned before they know a bit about everything and can step in wherever they are needed. They usually jump around to different teams a lot to assist with time sensitive things.
AI Programmer - Deals with all the Artificial Intelligence in the game. This is what I personally really love about game development and what I focus on.
Tools Programmer - They write all the in house tools that the development teams need. It is actually quite surprising how many tools are needed for a game.
Sound Programmer - Deals with the sound of the game obviously.
Physics Programmer - Generally they specialize in game physics and game collision techniques. They generally will be in charge of creating the physics API for the game and also work closely with the AI team.
General Gameplay Developer - These guys generally will be the ones that concentrate solely on implementing the game's rules and mechanics, creating the different entities that make up the game, etc etc.
UI Programmer - Deals with creating the UI for the game which includes loading screens, menu screen, overlays, etc.
Networking Programmer - As the name implies they mainly deal with the multiplayer aspects of the game. They focus on mainly the networking portions of the game (Obviously ;p).
Those are the main different aspects of large game development teams and there is a few more that aren't as common like people who specialize in porting a game to another platform.
But anyways just learn about the basics of game development if you haven't already then once you get the hang of them you should have a good idea of what part interests you the most.
As for what degrees you should shoot for I would have to say go for a standard comp science degree instead of one of those "Game Programming Degrees" since everything I have heard is that those degrees don't really hold much weight in the industry.
And for subjects obviously you will want to learn C++ since it is the main programming language in the game development industry, you will also want to know some scripting languages like Lua or Python since a lot of modern games have a lot of thing implemented in scripting languages these days. Also math is quite important specially if you want to specialize in AI, Graphics or Physics programming since they can be pretty math intensive.
Other then that it really is up to you, once you get the hang of the basics of game development you should know what you will need to study up on and what you will need to learn more about.
Wish you the best of luck mate and would be glad to help out with any other questions you might have.