Hi, these are good questions. Glad you are working through this example, as it's very instructive about the structure of QN-conserving MPOs. First of all, please note that some of the choices in this code and MPO convention are not unique, but only up to gauge transformations. However, a lot of the choices are natural and reasonable for reasons we could get into after further discussion.
The broadest context here is that this is an MPO which is symmetry-preserving, so in the parlance of ITensor has net zero QN flux. We find for such MPOs, it's most natural to further require every MPO tensor individually to have zero flux too, just to set a clear convention. So that's the convention used here, which I think you already know.
To answer your first question, yes, the QN-flux of the S+ operator for the case of S=1/2 is equal to +2. Similarly the QN-flux of S- is -2. These fluxes are given in "ITensor units", where as you know +1 (ITensor) corresponds to +1/2 (physical) and +2 (ITensor) to +1 (physical) etc,
So because the S+ operator has net +2 flux, the MPO bond connecting it to the S- operator, which by convention points Out, or away from the S+ operator when making the S+ S- term, carries -2 flux. This makes all of the tensor net flux zero for those blocks.
Similarly for the case of S- S+ the MPO bond will carry +2 flux.
The other 0-flux sector of the MPO bond indices is for cases like the Sz Sz terms or for all identity operators to the right or left.
To your second question, regarding the dimensions. This just comes from the particular MPO (in this case a Hamiltonian) which is being made, and how many different types of terms. Roughly speaking, when not using additional compression tricks, the dimension of an MPO for a Hamiltonian with T different kinds of terms is T+2. So here T=3 (Sz Sz, S+ S-, S- S+). The +2 part in the T+2 within the MPO corresponds to the cases where there are identity operators either to the left (i.e. we haven't put down any non-trivial operators yet) or to the right (we are done placing all operators).
Finally, to your question, the dimension come from how many different terms carry the same QN flux across a bond. The two identity-string cases plus the Sz Sz terms all carry zero flux, so that's 3 different settings of the bond in the zero-flux sector. The remaining two cases are S+ S- (1 case in the -2 sector, so dimension of 1 there) and S- S+ (1 case in the +2 sector, so a dimension of 1 there also).
Hope that helps!
Miles