Put him in his crib or play pen (no toys) every single time. Don't hold his hands down except while you are transferring him to a safe place. Then leave the room. He wants your attention and he's getting it - the more he laughs, the more frustrated you get (understandably), and the more attention he gets. So if you deprive him of human contact, he'll get the message. Don't worry to much about communicating - just say "no" - don't even worry about "No hitting" because it doesn't cover "no head-butting"!) At this age they don't understand "hurting" someone else - they really don't have empathy so there's no point in trying to teach it. You can say "No, that hurts" just to have a consistent message of things that hurt - but don't expect any real empathy and really don't focus on getting him to say he's sorry. At 15 months, he's not sorry. And that's not the point - the point is to get him to stop.
My son did the head-butting thing at about age 2 - it was awful. I made the commitment to leave wherever I was - a store, a restaurant, a play date, EVERY SINGLE TIME, and immediately. I just swooped in, picked him up, put him in his car seat (I even kept a blanket in the car so I didn't have to waste time with his jacket), and went home. It was a hassle sometimes because it wasn't convenient for me to leave a shopping cart of stuff I needed to purchase, but it ended the problem in less than 2 weeks.
When you take him out of his room, you can say he goes in there if he hits. About 3 minutes of being alone with no toys should be enough. If he screams, don't go in until he calms down. The point is to stop the hitting. He will figure out that it's bad for HIM if he hits, pulls hair. Eventually he'll understand that he hurts others, but for now, it's enough that "hitting equals zero fun".