Processes access virtual memory space, not physical memory. Applications never access RAM directly but only through the memory management interface of the processor.
Depending on which version of Windows you are using, and how the program was compiled there is a differnt maximum ammount of addressable memory.
All 32 bit processes on 32bit Windows have a 4GB virtual address space. The upper 2GB is common to all processes and is used by the system. The lower 2GB is private to each process and is inaccessable to all others. Unless the program was compiled as large address aware, in which case it will have 3GB of private address space.
For 32bit processes on 64bit Windows, each process has 2GB private address space, unless compiled large address aware in which case it has 4GB private adress space.
For 64bit processes on 64bit windows each process has 8TB of private address space whilst compiled as large address aware. The 2GB address space limit remains for programs not compiled as large address aware.
This is completely independent of the size of RAM or the pagefile. The system maps physical memory into this virtual address space according to both need and availability.
At any given time the data in virtual memory space might be stored in RAM, on disk, or both. All of this is totally transparent to all applications. Frequently accessed data will be kept in RAM with the remainder left on disk.