When I started programming I quickly found out that for me the best way to learn is to see how other people did it(not copying, but understanding).
Messing around with open source stuff, trying to see how it works.
Disable function if you don’t understand it and see what have changed.
Trying to break things and then fix them(look up the solutions to the problem in google, instead of restoring the old code).
Add another step into the loop, make it for example rotate the object or rotate the camera around the object.
Try to join 2 small opengl programs.
Regarding 2d and 3d, most people will say that you should start as simple as possible.
But there are few thing you should consider when choosing between 2d and 3d:
-Do you know enough maths to work with 3d? (or if you are good at maths you can pick it up quickly)
-Do you find it easier to create a set of 2d graphics or 3d models and textures?
2d most likely will be easier, but if you have enough maths and prefer 3d models go with 3d.
If you will start with 2d you will have better understanding of the maths behind collisions, rays and selecting, which is similar in 3d except for 1 extra dimension.
What type of game would you be aiming at?
(I wanted to start off a MORPG, which obviously failed, I got stuck at inventory management, it was working but I couldn’t concentrate on anything else as I though there was something missing in it and eventually I gave up. The first working one was a simple tower defense game in 2d, followed by improved and rewritten sequel, which still was really simple)