A lot of good examples here trying to explain what's wrong with these words, but IMHO all this verbiage shouldn't be necessary.
Homo and fag are both homophobic slur words that occur in hate speech. They are unacceptable words amongst people who are accepting that human beings are diverse. Unacceptable. Charlie's actions have zero to do with it.
If Kenny wanted to note that Charlie was "gay" he should have said gay, which is the term Charlie himself would use to describe his orientation. Even Randy got that, and Randy is no model of political correctness.
I think the best defense one could make of Kenny's word choices is that MAYBE he is ignorant that those words belong to hate speech. I wouldn't have thought it was possible not to know that, but here is this exchange in this topic ... but more likely Kenny is just ignorant, prejudiced, and needs to put others down to feel good about himself.
I'm not surprised he's threatened by Charlie, who is not even 30 and working for one of the top ten law firms in the world, not to mention being fit, handsome, articulate, educated, and able to function in a team and play Survivor without being miserable. So many reasons to envy Charlie ... poor Kenny.