On 3D game development.
First of all, if you have done no 2d game development first, do some 2d game development first
. For this, you could use SFML or SDL (or other things).
When it comes to 3D, you have many options. You could use a 3D rendering library such as OGRE, Lightfeather or Irrlicht and make a game engine. You could use a library such as SDL (for game handling) in conjunction with OpenGL (to make 3D graphics). There are also game engines out there that have 3D functionality built in, such as the UDK. You should note that by searching online you will have to go through 20-30 tutorials about any one of these things to get a grip on starting to use it. This is the kind of complexity 3D games have.
Now, if you are thinking that you're going to sit at home and code 3D games on your own, you are probably wrong and you are going to be disappointed. Make some 2D games first so you can appreciate the difficulty. Once you have done this, consider again if you want to make 3D games.
Once that is reconsidered, if you still want to make 3D games, you will probably find that a 3D game project will require:
-Six months or more set aside to work on the project
-At least double the amount of time you set aside
-Good maths skills (matrices, algebra, trigonometry)
-A lot of hardwork and heartache.
I've made a few 2D games and intend on moving into 3D at some point, perhaps late next year, so I've done a bit of research already. Just so you know, this info is purely from my research, and is not from a seasoned 3D game programmer. That said, I think it's fairly accurate advice.