Don't count on the sweet cuddly toddler part, hee hee. He sounds like a boy indeed!!
I have a little boy that is four that too could be rough as a baby, just when he had a hold of my hair, HE REALLY had a hold if and a lot of the same scenarios you are speaking of.
What worked for us is if you set him down and away from you every time he goes cross the line of being fun and then too rough. I would pick my son back up in a few minutes and hug and kiss him and say "be sweet and nice, isn't this nice?"
When my son would pull my hair, I would set him down immediately and say firmly "NOT NICE!!" and yes, it would upset him but it took a while and then he figured it out.
He would get hand fulls of my poor daughter's hair!
If he does it when you nurse him, put him down immediately!
As far as head butting, must be a boy thing but he will get past it, especially when he starts figuring out it hurts! :) My son did that a few times to me. I just kept his head away from my face so not to cause injury. I don't think it is out of any kind of being mean more like it is just common for boys to get rough and like that stuff.
As he got older we just had clear rules of boundaries in what was fun wrestling and tickling vs. going beyond with pain or being too rough. He gets it now but loves to get all silly and tickle and wrestle! My kids are 3 years apart too and I am a single mom raising a little boy so I am learning as I go.
There are many times he still wants to curl up in my lap and be loved on and is so full of hugs and kisses, but then there are others he is a normal boy and wants to wrestle and get rough!