"cross-platform" refers to everything that runs on different platforms, so it can be an OS or CPU (type (x86 / MIPS) or bit size (32/64)). This does not mean that you need to rebuild to run on other platforms only that which, for example, QT can target many platforms, but you may need to rebuild for each application, or you can build once, for example, java or .Net
'cross compiler' means a compiler on this platform that makes a program that can run on another platform. Thus, create WinCE executables on Win32. Or you can create a Linux application in a window window by building a version of GCC that works on Windows, but the goal of the output is Linux / Elf. If you have a built-in device, you almost always cross-compile to create the target executable.
X86, X64 or any CPU. What does it mean? It controls how the .Net application focuses on one architecture or not, if you aim, it will not work on both, but many compilers do some optimizations. If it is not targeted (any processor), it will work on both. This is mostly useful if you are directly accessing an external .dll, and you are tightly linking the 64-bit or 32-bit version and therefore want your application to run in the same environment.
In Windows installers, 64bit can run 32-bit applications and 32-bit installers, where 64-bit applications cannot run on 32-bit systems. On other platforms, you usually rebuild the code for your architecture (Linux), or on the Mac you download generic executables (which, I think, have several whole builds inside)
Simeon pilgrim
source share