Is black offensive when used to refer to race or skin colour? If so, should we then not use white as well?
If I may quote George Carlin again:
First of all, I say "black." I say "black" because most people prefer "black." I don't say "people of color." People of color sounds like something you see when you're on mushrooms. Besides, the use of people of color is dishonest. It means precisely the same as colored people. If you're not willing to say "colored people," you shouldn't be saying "people of color."
Besides, the whole idea of color is bullshit anyway. What should we call white people? "People of no color"? Isn't pink a color? In fact, white people are not really white at all, they're different shades of pink, olive, and beige. In other words, they're colored. And black people are rarely black. I see mostly different shades of brown and tan. In fact, some light-skinned black people are lighter than the darkest white people. Look how dark the people in India are. They're dark brown, but they're considered white people. What's going on here? May I see the color chart? "People of color" is an awkward, bullshit, liberal-guilt phrase that obscures meaning rather than enhancing it. Shall we call fat people, "people of size"?
I also don't say "African-American." I find it completely illogical, and furthermore it's confusing. Which part of Africa are we talking about? What about Egypt? Egypt is in Africa. Egyptians aren't black. They're like the people in India, they're dark brown white people. But they're Africans. So why wouldn't an Egyptian who becomes a U.S. citizen be an African-American?
The same thing goes for the Republic of South Africa. Suppose a white racist from South Africa becomes an American citizen? Well, first of all he'd find plenty of company, but couldn't he also be called an African-American? It seems to me that a racist white South African guy could come here and call himself African-American just to piss off black people. And, by the way, what about a black person born in South Africa who moves here and becomes a citizen? What is he? An African-South African-American? Or a South African-African-American?
All right, back to this hemisphere. How about a black woman who is a citizen of Jamaica? According to P.C. doctrine, she's an African-American, right? But if she becomes a U.S. citizen, she's Jamaican-American. And yet if one of these language crusaders saw her on the street, he'd think she was an African-American. ... It's just so much liberal bullshit. Labels divide people. We need fewer labels, not more.
I'd use "black" to refer generally to people of sub-Saharan African descent. "African-American" is a term that can confuse people; it's usual meaning is "descendent of pre-1865 black slaves in the USA", or a black person of other descent acculturated amongst slave-descendants. It doesn't mean "any person of African descent who is an American citizen" (for example, Charlize Theron is not an African-American). Recent black immigrants from Africa don't fit particularly comfortably into the "African-American" category, as they don't carry the culture.
It's a subset of black people. Generally, African-Americans prefer to be referred to as such, rather than as black people (in the same way as I'd prefer to be referred to as "British" rather than "European").
Using black as a noun ("that man is a black") rather than an adjective ("that man is black") is often seen as less acceptable - one is a description, the other implies that it's a primary characteristic.
Black people in non-American countries are not often called *African-British or *African-French or whatever (we might get what you mean, but that's not a term anyone would use). "Black British" has the nice benefit of alliteration that African-American has, and seems to be the preferred term. As about half of the black people in Britain are immigrants (or descendents of immigrants) from the Caribbean and about half are (more recent) immigrants (or their descendents) directly from Africa, geographical terms are generally seen as more specific - "African-British" might suggest "black, but not Afro-Caribbean", though, again, it's not used much because of the confusion.
I don't think there is one answer that every group would universally agree with as their preferred term. Some people prefer "African-American", some prefer "person of color", and some prefer "black". I don't think most people would become overtly offended by everyday use of any of these terms, but some might consider one or more to be a pet peeve when they hear it.
Here is the history (via OED) of "African-American" and its rise in use:
Although both African and African-American were widely used in the United States in the 19th century, the adoption of African-American as a preferred term among black Americans dates from the late 1960s and early 1970s (particularly after an April 1972 conference at which Ramona Edelin, president of the National Urban Coalition, proposed its use). The term gained widespread acceptance following its endorsement by the Reverend Jesse Jackson (b. 1941) during his presidential nomination campaign in 1988.
I think that non-American black people find this term ignorant at best when applied to them. Also, sometimes immigrants who have east African ancestry don't feel that this term applies to them. And other people of color just find it awkward, or simply have no problem with "black".
That said, even if you fall into the camp where you feel that "black" is an offensive term, it doesn't mean that the same must be true of "white". Each word has a long history, and different associations get embedded in different words, such that superficially or logically corresponding words like "white person" and "black person" don't necessarily correspond in their connotations.
I think we really ought to leave that up to the people we're assigning the label to to judge. A 2007 Gallup poll among, uhm... African/Black Americans suggests that when asked 'which term they prefer', most (61%) don't care either way, 25% prefer 'African American' and 13% 'black'. That's a 6 point increase from 1991 for 'African American' and a similar decrease for 'black'.
The term 'African American' appears to have won acceptance in the 80ies after Jesse Jackson began to use it, rather than the other proposal 'Afro American'.
Generally, I think its best just not to refer to it at all. Its a minefield, and frankly it shouldn't even be relevant information in almost all cases.
Sometimes (eg: in stories about racial issues) it is unavoidable. But if the person's ethnicity or melanin content isn't germane to the discussion, there's really no good reason to bring it up.