It's a terrible thing when someone starts to tell you about concerns, problems, or issues that are bothering them, and then the list keeps coming. To me, the things that are being talked about are actually less important than the fact that he kept it all bottled up inside him.
If I were you, that is what I would address -- it is not acceptable to let things slide and then explode with a shitload of crap that has been festering. It becomes ammunition -- and it is a way to throw someone off-balance. Of course, you didn't know what to say, of course you were thrown by it all, of course you were overwhelmed and confused -- you were bowled over by a tactical strategy he probably didn't even realize he was using.
Here you were, all this time, going along your merry way trusting that he was okay with stuff when he wasn't. That is not fighting fairly. What needs to happen for things to be resolved is that he talk about it when it comes up, so you can see it and work on it. I would tell him if these are things he feels are important, he needs to bring it up when it happens, when the feelings arise, not stuff it down and save it for another time. Because every time he does that, it becomes a mark against you that only he knows about, and eventually builds resentment. If he can feel that it's okay to talk about stuff as it occurs, those talks will likely be level-headed and honest, rather than big blow-out fights, which are so unnecessary. You can't tackle, or even see, everything that's bothering him when it's a surprise attack.