In theory the electron wave function is always a two component spinor and it is necessary to represent it as such in the noncollinear and spin-orbit case (note that spin-orbit has nothing to do with the wave function representation, it is just noncollinear spin plus an extra term in the Hamiltonian). In the collinear and unpolarized case we use the fact that we know that the Hamiltonian will not have any spin offdiagonal components to use an effective non-spinor representation of the wave functions: in the polarized case we will have two states Ψ↑ = (ψ↑, 0) and Ψ↓ = (0, ψ↓) which will be the solution to the up Hamiltonian H↑ and the down Hamiltonian H↓, respectively, while in the unpolarized case the up and down Hamiltonian are identical so we have Ψ↑ = (ψ, 0), Ψ↓ = (0, ψ), where ψ is the same and Ψ↑ and Ψ↓ have the same eigenvalue - they are spin degenerate. In these cases we only the scalar ψ part for computational reasons: it reduces the memory and CPU needed (no need to calculate a bunch of zeros).
There is in general no meaningful (x, y, z) projection for wave functions. You kind calculate the expectation value of the spin operator S = ħ/2σ, where σ = (σ_x, σ_y, σ_z) are the Pauli matrices, maybe that is what you mean? Then you get e.g.:
<Ψ|σ_x|Ψ> = (ψ↑*, ψ↓*)([0, 1], [1, 0])(ψ↑, ψ↓) = ψ↑*ψ↓ + ψ↓*ψ↑
I don't think we have ready made functionality to calculate this, but you can do it with the Python API.
Again, the use of the word "projection" for spin-density quantities like electron density is maybe a bit misleading in QuantumATK, but it is historical: it has been called that for 15 years... When calculating e.g. the density we actually calculate the scalar density n(r) and m(r) and combine them into a 2x2 matrix: the spin density. The x-projection is actually just the x-component of the magnetization: m_x(r).