As for language... ANYTHING. Probably C++ or C as they're closer to the machine than other oop languages like Java. Also, maybe an understanding of Win32 API might be helpful, not entirely sure though, but it could help in making use of some of the system's resources to improve the game's performance. But, really language isn't a requirement for game making.
As for what else, just simply making a good game like the ones you listed requires extensive knowledge in computer science topics concerning how graphic processing works and how to make use of a PC's hardware to gain improved performance. Also, it's the ability to make programs on that scale which isn't easily learned. Programming isn't really computer science related (it's only a tool to learn the topics in computer science), but many of the people who develop games like the ones you mention have at least a Bachelor's in Computer Science.
It isn't a requirement but not many people one day wake up and can program really complicating ****. It just doesn't happen.
BTW, assembly is good for interacting with hardware directly, but I know nothing about assembly language beyond what it it is. I don't know how easy it is for someone to pick up on.
Also, what's wrong with American sites? America happens to have some of the best programmers - maybe also some of the laziest and most demanding but we also have good ones as well. A site that teaches you doesn't hurt.
You won't ever get started on a game on the scale of "World of Warcraft" anytime soon. It's just too big for someone who has no experience (which I assume you are judging by your question). The best thing for you to do is to practice by starting out with really simple projects. Make use of the library's GUI packages before you begin to work on some of your own work.
Besides the programming aspect, there's still the art aspect that you will need from someone oneday. Getting an extensive knowledge in Software Engineering will help you manage your own team of programmers and graphics artists, and the like when you begin your masterpiece. Until then, you'll have to stick with amatuer programs using other people's stuff.
Good luck, and go to college!
In response to T-izzle, Java is easier for beginners to learn than C++ and it's highly portable, meaning there's no compatability issues (works on any computer), but it does perform at only half the speed of C++. However, there are low-level languages that provide even more performance but are many times more complicating to learn and master. No one programs complicating software entirely in binary, right?
You have to find the best balance of performance and ease of use to find what's right for you. But, having the best performance for the worst possible system is nice to have. It's something Microsoft and many software developers don't follow.