Программы работают с памятью с помощью указателей на участки памяти (адресов). То есть можно прямо здесь и сейчас взять и попытаться прочитать/записать по любому адресу ячейку памяти. За это программа практически всегда будет убита, но это неважно.
32-разрядные программы работают с 32-разрядными адресами, 64-разрядные -- с 64-разрядными.
32-разрядный адрес позволяет обратиться к любой ячейке памяти в пределах 2^32 = 4 ГБ.
64-разрядный адрес -- к любой в пределах 2^64 байт.
В случае win32 часть памяти из этих 4 ГБ занята ядром ОС. То есть программа по-прежнему может обратиться к памяти, которая принадлежит ядру и по-прежнему будет убита.
Фактически, максимальный объем памяти в win32, который ОС может выделить программе -- около 2 ГБ. Остальная так или иначе недоступна.