My 2.2 DS was exactly as you've described. And I was much like you, he head butted walls, floors, corners, anything inside or outside. I was a nervous wreck around him and he'd be violent towards me too. He was always aggressive to other children also.
I was in close contact with my health visitor who said it was normal and that he wouldn't hurt himself but I was doubtful. One day he had the biggest outburst and head butted for about 20mins, nothing I did could stop him, his forehead was covered (and I mean COVERED) in purple bruises for a fortnight. After that, I put up a travel cot in my living room and put him in there at the first sign of trouble, I'd say "we don't do that, timeout" and then ignore him while he's in there until his aggression turned to upset, I'd get him out then and comfort the crying and tell him it was ok to cry but not hurt himself or others.
Because I was more confident in dealing with him, it reflected in the way he treated me and the aggression towards me and others stopped too. I eventually took the travel cot down after about 4 months but now he has a timeout corner.
Like yours, my DS isn't brilliant with talking and explaining himself, which I thought it was but looking back it was definitely more that he couldn't deal with his emotions.
Make sure you praise the good behaviour when he is good, I thought it would never end, but now only a few months on, he's the most caring, thoughtful, loving and happy little boy.
He's still got it in him to be aggressive but I'm much more in tune to him now and I prepare our surroundings to not cause him to outburst, for example, he likes to climb, I say no, then he tantrums, so now I remove any opportunities for him to climb. As with waking from naps, I'd go in and open his curtains slightly, leave his door ajar and then he'd come around on his own.
I have an older DD who was an absolute angel and I never had to even consider the way I parented or even remove anything from a room to avoid an outburst but if he's happy, I'm happy and life is easier it will get easier