you missed one, carbonation of concrete. steel doesn't rust in concrete becasue its very alkaline, (dissolves your skin if you get wet cement on it). While your skin isn't happy in high alkalinity, steel is, so rather than turning into rust, it wraps itself in an oxide coating called a passive film. Atmospheric carbon dioxide dissolves in the pore water and is a bit acidic. When you put something a bit acidic onto something alkaline for long enough it stops being alkaline, so the steel ends up in drinking water and will rust. Takes a while to happen, and a decent coating will stop it, but needs to go on the list.
Also not all sulphate attack forms expansive stuff but I'm just being overly picky there.
all the best