That is a very broad question. 3D programming is a combo of knowing your the language, knowing some good math and alot of patience. This is not from personal experiance just from looking at some 3d stuff.
Here is the best openGL site as far as I know http://nehe.gamedev.net/
1. Overload fuctions and Call Parent Methods (Class Structure)
2. How to use interfaces
3. Understand Data Structures and Custom Data Types
4. Geometry+ in math
5. Knowlege in 2d graphics and 3d graphics (especially triangles and rectangles)
6. Understanding Timers and Animation
These are just the basics. You can refer to the opengl.org documentation for more details on prequisites.
OpenGL is of interest to me too, I've found some helpful tutorials, info, docs at this site. I'll be taking a course soon on OpenGL so I kind of backed off of it until then. Here's the site to check out
I would also recommend a solid foundation in physics if you're going to have your objects interacting with each other (which is hard to not have in OpenGL). You'll want to be fairly comfortable with pointers as well since they (through advanced data types like linked lists) are often used to manage the objects in your virtual world.