'cross platform' refers to things working on many different platforms, so that may be OS, or CPU (type (x86/MIPS) or bit size (32/64)). This does not imply if a rebuilt is required to run on the other platforms just that is can, eg QT can target many platforms but you application may need rebuilding on each, or you may be able to build once, like java or .Net
'cross compiler' means a compiler on this platform that makes a program that can run on another platform. Thus build WinCE executables on Win32. Or you may build an Linux application on a window box, by building a version of GCC that runs in windows, but thats output target is Linux/Elf. If you have an embedded device you nearly always cross-compile to build the target executable.
X86, X64 or Any CPU. What that means?
It controls how the .Net app is targeted to one architecture or not, if you target then it won't run on both, but the compiler many make some optimizations. If it's non-targets (Any CPU) it will run on both. This is mainly useful if you directly call into external .dll's and you hard link the 64bit or 32bit version, and therefore only want your application to run in the same environment.
On the installers front Windows 64bit can run 32bit applications and 32bit installers, where-as 64bit applications cannot run on 32bit systems. On other platforms you normally rebuild the code for the architecture your running (Linux) or on the Mac you download universal executables (which I think have multiple targeted builds inside)