One word can be fine and the other wrong NOT because of different meanings but because of different perceptions.
"Idiots" is a vast group of Earth's population, but using that word is fine because every idiot thinks he's not an idiot.
On the other hand, f@ggot knows that the word refers to him as well; if you use that word, every imbecile within the associated group feels abused and may cut his veins because of the painful cognitive dissonance.