If you have a 32-bit computer, you have no choice but to install a 32-bit OS. On the opposite side you can run a 32bit OS on 64 bit machine and if you are running a 32bit os on a 64 bit machine, you are under utilizing your processor.
When running 32bit binaries on 64bit machines (assuming the OS is running in 64bit mode), you have the following limitations:
The binary cannot take advantage of 64bit arithmetic instructions. This might reduce performance.
The binary cannot address more than 4GB of virtual memory.
On the reverse of it i.e. running the 64bit binary on the 32bit OS (64 bit hardware) is a OS dependent as it does require a little more work inside the kernel, because it must manage 64-bit pointers to user space together with 32-bit pointers to kernel space. (I doubt anyone must be supporting it)
Ideal situation is to have a 64bit binary for the 64bit OS running on 64bit Hardware so that OS need to work less.
32but compiler can not address more than 4GB of virtual memory. So running a 32but binary on a 64bit OS may have an impact on the performance on case to case basis.
Coming to first question - really I dont know....