Having lots of links can be handy, but if you're looking at learning any of it you'll need to decide on how you want to split breadth vs depth.
Breadth implies you know about a lot of different tools (programming languages included) but don't necessarily know any of them really well. That's where depth comes into play. It's very time consuming (and likely impossible given our finite time) to have a great deal of depth in knowledge about everything. It's much better to choose certain things and have more depth in that, but you should also have some depth in everything.
Basically, you want to understand how each tool works in general and then know how to use the more popular/prevalent tools specifically. That way you can do work that helps the majority, but if you want to help another group who uses something totally different you can still offer some help.
I find it unlikely you're not willing to learn, or you wouldn't have bothered to post those links. You already have a good headstart with that willingness. Knowing about programming languages, computer graphics and graphics tools, and some low-level O/S stuff in general basically means you can learn the specifics when you need to.
For example, if you understand procedural programming languages at the conceputal or general level, then it's just a matter of "I know how to write this statement in <language X>, now I just need to look up how to write it in <language Y>". Initially, books or the Internet will provide that, which is where your links come into play. The more you use language Y, the less you'll have to look it up. But the more you program period (provided you focus on the general concepts and not just syntax), the better you'll become at any programming language.
If you knew absolutely nothing about programming (which I don't think is the case), I would recommend learning more conceptual stuff with examples in two specific popular languages. For example, learn about object-oriented programming and control flow and do examples of that in Java and C++. In doing so you'd learn the concepts behind program flow, control structures, and OOish stuff while also learning how it's done in Java, C++, and the differences between the two. That is useful knowledge, far more useful than merely memorizing C++'s standard library (which you'll memorize anyway if you use C++ enough).
For the graphics tools, any decent tool should provide similar functionality so you'd want to learn what those functions do and how to utilize them. I'm not a graphics guy, so aside from suggesting knowledge about layering (and how to work with tools that do not layer), recoloring and texturing, there's not much else I can add. However, if you plan on doing anything in 3D definitely learn about modelling and how models + texture are used. That's the main difference between 2D sprite/image-based games and 3D games.