Languages are often invented to solve a specific class of problems or implement some 'new' paradigm. For example, Java exists to promote platform independence and Lisp was intented to embrace functional programming. Perl was invented to be the "Swiss army knife" for processing text files, and the language contstructs (not just the libraries) are really geared for that.
No, for the simple reason that there are many different ways to create the same end result. Also, compilers have their own ideas about optmization, calling conventions, etc. This is a serious issue when developing libraries that have to be compatible at the binary level (as apposed to source code level)
You are thinking of RAD (Rapid Application Development) frameworks. The basic idea here is that for many classes of problems, one can take a cookie cutter approach to solving them. So, RAD environments give you lots of high level widgets and code generators to make things easy. BBH has already mention auto generating code form UML diagrams. Other tools like Borland's Delphi, combined with powerful 3rd party modules, can allow you to develop simple database frontend programs without ever writing a single line of code. But you'll find that RAD tools work best only in narrowly defined niches; they can't do everything for you yet.
Nothing. Except for a few areas, win98 programs should run without modification on WinXP. WinXP gives you more APIs to do more stuff, but that's about it.
Start by defining in more detail what you want to do. You should choose the language to fit the problem, not the other way around. Here's a quick list:
C++ / Java : for "industrial" prgramming, for lack of a better term. Big, complex, 'enterprise' applications. High Performance apps.
Perl / Python : for one off scripts and small server side programming. Very flexible, rapid development cycle and rich library support.
PHP / Ruby / ASPNet : for making web sites.