First I mention this very similar question on Physics SE and the related answer.
Then, a couple of points which are not well addressed in the previous answer in my opinion. First of all we are here discussing excitons in extended systems. The word "exciton" is sometimes used also in isolated systems, but with a slightly different meaning.
Second we are discussing systems in which the spin is a good quantum number. This happens when spin-orbit coupling SOC is neglected. Otherwise the discussion is true only in an approximated way.
Third we have to distinguish between spin S and orbital $L$ angular momentum. Excitons can also have an angular momentum $L$, or, in presence of SOC, of their combination $J$. However the definition of $L$ is always approximated, since $L$ is a good quantum number in presence of $SO(3)$ invariance, while, the exact symmetry of the exciton will depend on the underlying crystal lattice symmetry $O_l$. The approximation is better for more delocalized (i.e. Wannier like) excitons.
The discussion on heavy holes is related to the angular momentum $J$. For localized, i.e. Frenkel excitons, one should look into the irreps of $O_l$, as seen in this Chem SE answer. Excitons can have $S=0,1$ and potentially any $L$ or $J$. (However no $S=2$ for obvious reasons!)
Bright excitons are always with $S=0$, $L=0,1$ due to electric dipole selection rules.
This means that the valence band from which the electron is removed and the conduction band into which the electron is added have the same spin. However, as correctly pointed out in the question, the convention is that the spin of the hole is the opposite of the one of the valence from which it is removed. Also notice that the election and the hole does not stay in a specific state in the two bands, but they can be expressed using these bands as a basis-set. So the discussion specify which state in the basis set can be used. Notice that instead S=1 excitons (i.e. magnons if $S_z=\pm1$) can be generated via magnetic fields. L=1 usually require instead circularly polarized light.
For first principles simulations, the state of the art is the Bethe-Salpeter equation (BSE). For systems with $S=0$ ground state, this is always constructed and solved in the singlet $S=0$ channel. For magnetic systems both S=0 and S=1 solutions can be obtained (but always with $S_z=0$). For the case with SOC all excitons are computed. This is discussed in details in one of my recent arxiv articles
Finally let me add a comment on other possible approaches beyond BSE. For extended system quantum chemistry approaches are not feasible. TDDFT cannot capture the physics of the exciton at $q=0$, one would need TDPolarizationDFT or do the $q\rightarrow0$ limit of finite momentum TDDFT. However for neither there exist good functionals able to properly describe excitons. One of the reasons is that the exciton requires a long range interaction which cannot be easily captured by these theories. Despite all this, the structure of the TDDFT equations is the same as the one of BSE. So all the above considerations for BSE apply. Instead I'm not an expert on quantum Monte Carlo and I cannot add much on this.