The main difference is one of register.
"Big-headed" is a fairly informal word that can be used in everyday informal or neutral contexts. It just means to have a high opinion of yourself.
"Arrogant" is standard English, and it is used more in neutral and formal contexts. It refers to a person's attitude, behaviour or manner. It is also a more 'serious' word.
So, as Peter has pointed out, if you call your friend "big-headed", this could be taken as a joke. You could tease your friend by saying he's become "big-headed" after winning a competition, for example, and he wouldn't take offence. This could be said just for fun. Calling someone arrogant, on the other hand, would be taken as a genuine insult to his character. You certainly wouldn't be friends after that.