v-serp: AFAIK 32 bit will always be able to work in higher multiples. It's just the higher multiples that can't work in lower environments. I don't think there is a way to lose that backward compatibility.
No, you need explicit support in both hardware and software. Modern CPUs have different modes of operating, from the good old 16-bits "real mode" to the "classical" 32-bits mode to the "modern" 64-bits mode. The 16-bits real mode is only used (nowadays) at the first stage of non-UEFI boot loaders, so it's on the way out, but still not completely gone.
For the 32-bits mode, it's a different instruction set than the 64-bits mode, and currently it's the OS that switch the CPU from 64-bits mode to 32-bits mode and back when you're running 64-bits and 32-bits programs at the same time.
Then, you need specific libraries and kernel entry-points, the ABI (binary interface), both at C/C++ level and at kernel level are different between 32-bits and 64-bits.
But the "Intel world" tends to keep backward compat for long - your brand new CPU _still_ has a 16-bits "real mode" (able to address... 1 megabyte of memory).