There are several different issues here, so hopefully it doesn’t get too confusing. I’m not 100% sure about what Vista does (I work more with Macs, but the concepts are all the same), but it’s a common problem shared between operating systems and the hardware. I’ve just gotten my coffee, so hopefully I don’t screw up my explanation too much.
There are some limitations of how much RAM the hardware can support - this is usually the motherboard chipset. For example, my last laptop had a hardware limitation of only 3GB. I could physically put more RAM in there, but it would only see 3GB. Additionally, if you’re using virtual memory (i.e. swap space on disk) it’s possible to use more memory than you physically have. For example, if you only 1GB of RAM, you can use another 1GB of space on your hard disk, giving you a virtual space of 2GB. You still can’t go beyond what your OS actually supports, though.
Furthermore, the 32-bit issue is a major consideration. Typically, you are limited to no more than 3GB of RAM per-process. The basic reason is that 32-bit refers to how long a memory address can be. 2[sup]32[/sup]=4GB. The OS reserves some of that space for itself. Depending on the configuration, it’s typically either 1GB or 2GB, depending on how Windows is configured This leaves an application with the remaining space - either 2 or 3 GB.
This is the key difference between 64-bit and 32-bit operating systems (and programs). When you double the length of your memory addresses, you don’t just double the amount of space you can address - it increases exponentially, meaning 2[sup]64[/sup] (17.2 Billion GB). Now, in reality, on modern CPUs, they don’t actually support 64-bit addresses - the AMD64 chips only support 2[sup]48[/sup] addresses. This is still vastly more than the memory in any system today, so it doesn’t really pose a problem. You can still run into some problems on 64-bit systems, though, which in some cases are worse than 32-bit: since in theory your operating system can give you about as much space as you ask for, you can end up overtaxing your available RAM. Suppose you have 8GB of real RAM, and another 8GB of swap space, for a total of 16GB. If you actually try to use all 16GB, you will end up with major problems as data gets swapped back and forth between RAM and disk (known as trashing). On a 32-bit system, you would simply be prevented from getting into this kind of trouble, as there are hard limits to what you can ask for.
In most cases, individual processes don’t really need more than 2GB, especially for things like word processors, web browsers, etc. The types of programs that really need this additional space would be video editing software, medical imaging and various scientific computing software, some high-end games with lots of graphics, etc.