Why will Windows not allocate more than 2GB per program? Does that mean that anything over 2GB is a waste?...
A design decision back in the dawn of 32-bit Windows development. Basically, they just took the 4GB max virtual address space and split it in half, with 2GB for an app and 2GB for the OS. Since even 2GB was much more memory than an app would ever use (this was in the days of tens of MB of *total* system RAM), no problem.
As real-world installed memory amounts started to get into the GB realm, Microsoft added an option to change the balance to 3GB app, 1GB OS. This /3GB switch needs to be specified when Win XP boots to change the balance. In addition, even with this mode activated, individual apps need to have been compiled specially to take advantage of the 3GB app address space, or they will still get only 2GB max.
Here's a link to a brief description of this topic:
http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx
Physical memory over 2GB is not a waste and won't go unused (unless it overlaps with the addresses used for hardware, above the 3.0-3.5GB region, depending on the system's exact components).