For Blender, which is the better language to learn - OpenGl or OSL? And why?
Short answer is: (probably) neither

OpenGL is a framework for writing (not advanced) render engines, such as the Blender solid shaded viewport. It's pretty powerful, but isn't really useful to know as an artist.

OSL was designed by Sony to be a powerful, versitile language for creating Shaders at a fundamental, mathematical level. It's supported by quite a few notable production quality render engines, and is used widely in the VFX industry to create otherwise challenging shaders.

Fortunately though, Cycles Render has a quite excellent shading node system, so it's not really a nessesity at all. As a solo artist it's not something you should spend time learning, but if you plan on doing shading/LookDev for as a career in VFX, it would be fantastic to know.

I would recommend to actually learn a program called Substance Designer, rather than OSL or OpenGL. Substance Designer is a node-based software for creating procedural textures and materials, which are compatible in any render engine. Not only can Designer be used to make extraordanarily detailed and realistic materials, it supports MDL (material definition language) creation. MDL is becoming more and more recognized, and is starting to be implemented in more and more render engines. So yeah, learning Substance Designer would give you some extremely powerful knowledge, and it's safe to say it will keep it's relevance for a long time.

I hope this helps!

P.S.

Neither of these affect anything other than rendering, texturing, and shading, so if you want to be able to do other things in Blender like procedural modeling, simulations, creating add-ons, and things like that -- Python is definitely the right choice.