knowing C has definitely been helpful to me. If I didn't I wouldn't have been able to do some of the more complex stuff- such as, for instance, being able to display the right-click menu for a file or group of files (the same way explorer does).
And really- saying it depends on what your doing is kind of a easy answer. I cannot see any reason to use C++ for games over VB6- At the same time, however- in order to get good speed out of a VB6 based game there would need to be a lot of special calls (directdraw,direct3d) and so forth that aren't included in VB (but easily obtainable). As opposed to C++, for which the directX SDK was written for.
the lists provided in that article are more or less the most common languages used for that purpose- this doesn't always mean it's the best for that purpose, or that it's only possible with that language.
Every programming language has a lot of common elements that you'll always see- variables, control structures, etc. The more programming languages you can read/write, the easier it will become to pick up new languages- except in certain cases where the language seems to differ from any other you've encountered- for example, perl has some nuances that confused me at first. I still cannot write very good perl code, but at least I can read it and extrapolate what the heck is going on.
However, even then, my knowledge of other languages helped. For example: (probably doesn't have proper syntax or missing brackets)
print "hi" || die "couldn't print"
seemed a bit odd at first. print displays text- die quits. However, I was already familar with ||, which is the "Or" operator. because of this, I was able to infer that Perl uses "short circuit" evaluation, a little topic I learned about while working with Pascal. In this instance, Print will return true for success- with OR, if perl knows the answer, it won't go on. it print returns true, then perl already knows it will return true regardless of what the other expression is, so it skips it. However, if print fails, it will return false. in this instance the second expression is executed.
This was all based on stuff I learned from Pascal. Semantics between many languages are similar or their varied differences make them all the more pronounced.