The root meaning of ****** is someone who isn't fit to be part of society. That's what it's original connotations were.
It started as a bundle of sticks used for firewood, then it became associated with people who were so poor that they had to collect little bundles of firewood to sell, then it became associated with old crony women, and then eventually it became most famously associated with gay people. It's not got anything specific to do with gay people, it's just that gay people were once not welcome members of society, so the term became applied to them.
Once gay people are largely accepted into society (and I believe that they are), ****** will start to mean something specifically different. Or it won't. In the information age, things like this change strangely, because people are privy to so much more information from all over the globe then they used to be. The problem is that some gay people have taken on the term as a mark of pride amongst themselves. That will hurt the change that will make it not offensive to gay people because it prolongs the time when it's used to be associated with them. Hopefully, it will change eventually, because the root meaning of the word is much more interesting and says a lot more about our society then its specific meaning at this point in time.
But it will always mean "Someone who is not fit to exist in society" - at least in the eyes of the speaker. When you call a gay person a ******, that's what you're calling them. You're saying "You don't deserve to exist in society because of your station in life" So if you look at it in that context, everything he said is correct.