32 bit application memory use in 64 bit operating system.
If the app is AWE aware then they can use an address space beyond 4Gb, though less efficiently than a 64-bit app would. It is even possible for 32-bit processes under 32-bit Windows variants to access more than the 32-bit address space would allow, if PAE is anabled and the process is capable of using it.
An individual 32-bit process (that is not AWE aware) is usually limited to 3Gb (the first Gb of its virtual address space being reserved for kernel related action) but if you are running multiple processes then they will be able to use more in total (each can use up to 3Gb, total memory permitting) as their virtual address spaces are not shared.
The limit being per-process is more helpful in a Unix-like environment where services tend to be process based rather than thread based (multiple threads in one process share the processes resources and therefore share a single 3Gb virtual address space) as is more common under Windows (starting a new process in Windows as quite expensive so threads are preferred, under most Unix environments starting a new process isn't much more resource consuming than starting a new thread). It isn't very helpful for a machine that is running just SQL Server, for instance, as that it only going to be one process so will hit the 3Gb limit (some editions can be configured to be AWE aware but not all, and the feature is slated to be removed in the next major release).
As well as the 32-bit processes being able to use more than 3Gb in total the OS will be able to use any unused memory for disk caching, so it may not go to waste, assuming the processes do not open files in such a way as to tell the OS not to bother doing this.
If the application uses AWE, then yes (although this is not restricted to 64-bit OSes). Without it, the process is still restricted to a 4GB address space.
Sorta, depending on what you mean.
Assuming Windows...
If the OS is 64-bit, a 32-bit process by default gets 2 GB of user-address virtual address space. If the PE header of the .exe file is marked with the IMAGE_FILE_LARGE_ADDRESS_AWARE flag, then the process will get 4 GB of user-addressable virtual address space. In either case, the kernel's virtual address space is the same as 64-bit processes, since it is shared across all processes. Also of note, 64-bit processes that do not set the IMAGE_FILE_LARGE_ADDRESS_AWARE flag also only have access to 2 GB of user virtual address space.
The things you hear about special boot flags, 3 GB, /3GB switches, or /userva are all about 32-bit operating systems and do not apply on 64-bit Windows.
This is all gone over in excruciating detail on Microsoft's Memory Limits for Windows Releases page.
@David Spillett's answer also touches on another point: Multiple processes, all limited to 2 GB of user space, can still use significant amounts of RAM if available, as can the file cache.