I learned some OpenGL ES and some shader coding. But is it really a necessity for developing Android, iOS and windows phone games? Windows phone I'm 99% sure that it is not even supported but have not researched it yet.
closed as not a real question by Tetrad♦ Dec 10 '12 at 18:46
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.
Speaking to Android specifically, there is a 2D drawing API available as documented here that is not OpenGL ES based: http://developer.android.com/guide/topics/graphics/2d-graphics.html
If you aren't specifically looking to avoid OpenGL ES entirely and are just looking for a convenient abstraction on top of it to prevent you from having to work with it directly there are more options. For instance, while I haven't used it personally, starting with Android 3.0/API 11 it is possible to use hardware acceleration for the aforementioned 2D API: http://developer.android.com/guide/topics/graphics/hardware-accel.html
It does use OpenGL ES "under the sheets" but you wouldn't need to concern yourself with the details and/or create custom shaders. If this is acceptable you might also want to consider something like AndEngine: http://www.andengine.org/
With iOS, you probably want to check out their documents on Quartz 2d: https://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_overview/dq_overview.html
In terms of 3D, there are libraries that can buffer you from OpenGL ES a bit. I used the Irrlicht port for API level 8/2.2 a few years ago although it looks a bit dusty now: http://gitorious.org/irrlichtandroid/pages/Home
You might consider libgdx: http://libgdx.badlogicgames.com/
When you want to create 2d games, then no, you won't need it.
When you want to do 3d games, you should first consider the available 3d engines and do a cost/benefit analysis of creating your own 3d engine. In most cases, this analysis will tell you that using an existing engine will allow you to bring your game to market in a lot less man-hours.
Every software developer has the urge to reinvent the wheel. But most of the time it's wasted effort, because others have already done it better than you could ever do it, and they offer it for a fraction of the price it would cost you to repeat their work. An important skill for every software developer is the ability to suppress ones pride, and realize when it's more efficient to buy an existing solution instead of inventing an own.
But note that "free" solutions aren't really cost-neutral: you still need to invest time and money to understand their API and integrate it into your project. An expensive one which comes with good documentation and support can turn out to be cheaper than a free one with poor documentation and without professional support.