In my experience, one of the main hurdles for low-level graphic programming is the math. You really need some understanding of linear algebra, matrices and vectors.
And OpenGL is another beast of its own. To make matters worse, there are many different "flavors" of OpenGL. WIth desktop GL, there are the old, legacy ways from 20 years ago, which don't match todays hardware at all, and the modern (with "modern" meaning here just a decade old) way using the programmable pipeline. For embedded devices, like the raspberry pi, there are the OpenGL ES versions, with ES1.x basically using this old stuff, and 2.x being more like modern GL (but way more limited). Now the Pi does "natively" Support ES 1.x and 2.x, and with the new driver stack also desktop GL to a certain extent.
For a beginner, the multitude of options will be very confusion. If you really want to learn OpenGL, I can only recommend learning the modern way, using at least GLES 2.0 or desktop GL 2.0,. Unfortuinately, since GL is 25 years old now, there are lots of internet resources which are now outdated, teaching deprecated GL (for eaxmple, the presence of functions like glBegin, glLoadIdentity or glVertexPointer is a sure sign of outdated code).
For modern desktop GL, I would recommend the follwoing tutorials:
The problem here is that these tutorials require OpenGL 3.2 core profile, which the Pi does not support. So I'm sorry, but I can't really recommend any good tutorial at all...
"Perfection is attained not when there is nothing more to add, but when there is nothing more to remove." -- Antoine de Saint Exupéry