There's bound to be people who disagree with what I'm about to write, but I'm going to write it anyway. When it comes to computer graphics programming, I think learning OpenGL ES 3+ is the way to go right now. So much so that I wrote an OpenGL ES 3 (GLES3) tutorial series and also suggested using OpenGL ES 2 on AmigaOS as an alternative to implementing full desktop OpenGL. Here's why...
Avoid Learning Old Obsolete Methods You Shouldn't be Using
OpenGL ES 3+ is basically OpenGL with all the legacy crud removed. That's old legacy stuff that you shouldn't be using any more. Lots of OpenGL tutorials out there that use these old techniques, teaching people outdated methods.
With GLES3+ you can't use the old legacy crud because it's simply not there. So you learn modern OpenGL.
Write Software for ALL Devices (Desktop and Mobile)
All recent mobile devices support OpenGL ES 3+, so knowing GLES3 is great if you're writing stuff for mobile devices. However, everything GLES3 supports also works with standard OpenGL, so you can also write software for desktop computers. So that's all devices covered.
NOTE: Yes, there are very minor differences, but often only minor changes are needed (e.g., changing the shader's #version from "es" to a standard equivalent).
Why Not Use a Ready-Made Game Engine Instead?
If you just want to make a game, then yes, using a read-made game engine is the way to go. That way you can focus on the game instead of the lower-level mechanics. However...
Ready-made game engines can be overkill
Existing game engines tend to be made very flexible so they can support many types of games. You may find that you're not using 99% of its features/capabilities, especially if you're creating a Pong clone or simple shoot-em-up.
Writing Your Own Graphics/Game Engine Can Be Rewarding
There's something about building something yourself that makes you feel great. Being able to say "I made that and it works" brings immense satisfaction, especially when it took a lot of effort and smarts.
Added to that, you'll be able to tailor the game engine(s) you write to be exactly what you want. You'll know how it works, and will also be better placed to understand someone else's game/graphics engine should you need to customise it.
Understanding OpenGL Allows You to Customise Game Engines
Want a feature that your game engine of choice doesn't provide? You'll need to know graphics programming (OpenGL or some other API), or find someone else who does. It's that simple.
Get a Job as a Game/Graphics Developer
Game studios (big & small) need programmers who know graphics programming. You could become one of them.
What about Vulkan?
Yeah, what about Vulkan? It's the latest and greatest graphics API. Shouldn't we be using that? Isn't OpenGL obsolete now?
Well, no. Vulkan's creators themselves say that Vulkan doesn't replace OpenGL, and the two will co-exist. Why? Because in many cases the extra effort required to use it isn't justified. Vulkan doesn't magically boost frame-rates; it only helps when driver overhead is the performance-limiting bottleneck. In many cases using OpenGL makes more sense.
Secondly, while Vulkan is powerful, it's also very low-level, and this makes it difficult to use. It's definitely not an API I'd recommend to beginners.
So, those are my reasons for recommending learning GLES3. You avoid learning obsolete techniques and can target both desktop and mobile devices. I see it as a useful skill to learn despite ready-made game engines existing.
Agree or disagree with me? Write it in the comments below.
NOTE: You can get my OpenGL ES 3+ tutorial series by clicking here.