On 32-bit Windows systems (XP,Vista,7), any particular program can only use a maximum of 2GB of memory space, even though the OS can support 4GB. This is OS enforced. Most 32-bit software is written with this in mind. This exact reason is why Supreme Commander kept crashing on systems at release. The game would keep trying to write to memory past the 2GB barrier and crash. They later patched the game to only use 2GB and the problems disappeared. This OS implimented limitation can be removed with a switch, but due to stability issues it is turned off by default.
For 32-bit software running under 64-bit (Vista,7), this cap was increased to 3GB. So in practice 32-bit software has up to 3GB available, however since most 32-bit software was written with the 2GB limit in mind you'll find most programs will simply keep themselves under 2GB by design.