Well, for the record...
It seems a lot of people feel that unless you are a member of the group, you don't have a say in what an acceptable term is for the group. I've run into that problem when attempting to express my views on certain group names in the past. But of those three listed terms, one of them does apply to me: namely, homosexual. And I have no problem with going on record that I think it's absurd for someone to find that term offensive. It merely means that I'm sexually attracted to members of my own sex, and not to those of the other. I think the term is a good one, as gay has come more and more to mean only gay men, and it's good to have a term that encompasses both gay men and lesbians.
In general, I think a term most often comes to be seen as offensive when people perceive it to be used primarily as a pejorative. Hence, you're no longer supposed to refer to people as being retarded, even though it's a perfectly valid way to describing individuals who are slower to develop mentally and socially than they are physically, and it was once the preferred term. It's clear that many, and probably most people use the term retarded primarily as an insult, which makes it all that much easier for the term to be considered offensive.
On the other hand, sometimes a group chooses to use a term which had previously been considered offensive themselves. The term queer, for instance, was once intended as an insult, and plenty of idiots (a term formerly meant to refer to those unable to restrain their base impulses, but obviously no longer the predominant use of it today) these days use gay as an all-purpose putdown. (I tend to dislike the phrase "that's so gay" when referring to, say, a stupid rule being enforced. I'm often tempted to ask the speaker to explain what about it calls to mind man on man action.) This reclaiming of a term is often seen as symbolically powerful. The exact mechanisms for how this occurs are not terribly well understood, though.
As for the other two terms in the original post...well, this may lead to flaming, but I don't really see either being offensive. Negro's rather dated, and has connotations of the attempt to split people into three principle races, the caucasoid, the negroid, and the mongoloid, but that notion's fallen out of favor. Still, I can see why it's best not to use that word, as it's rather closer to nigger (a word I wouldn't use, just as I wouldn't use cracker or kike or spic of the like), which is a dangerously loaded term to try to use except for shock value. And despite the recent posting where oriental was declared offensive, I still don't buy that it is. The major objection seemed to be to referring to a diverse continent as if it were homogenous (which, if we're being fair, should also apply to the concept of White--the Norwegians and the Greeks looks pretty different and are rather culturally distinct, but we lump them all together in one broad term), but the suggestion that we just replace the term with Asian renders that argument nonsensical. If the former is offensive for the reason listed, then so should the second one be.