'A poin in the neck'is more colloquial and might refer to a temporary or a permanent situation, while 'thorn in one's side' would be more permanent. I'd also say 'thorn'is more serious- a rival would be a thorn and an idiot a pain.
Thanks a lot. The explanation is very practical; colloquial vs. non-colloquial; temporary vs. permanent; and idiot vs. rival. Come to think of it, you are right. We hear, "so-and-so is a pain in the neck or butt," often in a work place. However, we don't hear "a thorn in the flesh" very often.
Below is a non-rival situation:
If a bad stepdad/stepmom hates an innocent stepchild so much so that he or she would like very much to kick the child out, do you call the little one a thorn in the flesh in the eyes of the parent? (Of course the child is a victim.)