I think Mulliken can be fine provided you’re aware of the fact that the numbers vary strongly with basis set and the most reliable values are probably those obtained in small basis sets lacking diffuse functions, e.g., 6-31G*. We used it here, precisely for spin populations, because it’s easy (and because we wanted to make contact with some previous work):
Hirshfeld charges are likely to be much more stable with respect to basis sets and the algorithm somehow feels more physical (space is weighted and assigned to atoms based on superposition of atomic densities), although it can be proved that these charges give you the least change with respect to free-atom charges. See Section II of this paper for some references: https://doi.org/10.1021/acs.jpca.0c11356
The only way to “see” the spin per se is to compute something observable like an ESR spectrum, these charges are just models but they can be useful for comparing how the spin charge changes as a function of molecular structure (e.g., for a series of related compounds or the same molecule at different geometries).
By the way, were you able to get spin charges out of Q-Chem?
with those first three methods, what you are actually get is probably the Hartree-Fock charges. Given the known problems with delocalization of unpaired spins in DFT, this may be a better choice (although hybrid and range-separated functionals suffer less from this problem, as compared to GGAs).