In general, use the words that people would describe themselves with in ordinary conversation.
People of colour is awkward and to be avoided, as it lumps together highly distinct groups. It is basically a synonym for non-white. This defines people as what they are not, but can nonetheless be best when reporting on disparities in majority-white countries, when lacking the privileges of the majority is exactly what is at issue.
In America, prefer black to African-American, though the latter is still in circulation.
With indigenous peoples, it is better to speak of specific tribal groups where possible. When speaking about the overall population, most indigenous Australians should be called Aboriginal people (with upper case, and not Aborigines or Aboriginals), with the adjective Aboriginal. But this term does not include Torres Strait Islanders.
In Canada the groups include the First Nations, Métis and Inuit. Avoid Eskimo, a name given by outsiders, even if some groups still use it. And certainly avoid the cliché about words for snow.
In the United States both Native American and Indian are acceptable. But to avoid confusion with people from India, use Native Americans on first mention and Indians or Native Americans fairly interchangeably in
later references.
When writing about Spanish-speaking people and their descendants in the United States, use either Latino or Hispanic as a general term, but try to be specific (eg, Mexican-American). Note that many Latin
Americans (eg, those from Brazil) are not Hispanic.
In Britain, Asian is primarily used to mean immigrants and their descendants from the Indian subcontinent. Many are coming to dislike the term, and foreigners may assume it means people from all over Asia, so take care.
Africans may be descended from Asians, Europeans or black Africans. If you specifically mean the latter, write black Africans.
In South Africa, Afrikaners are whites descended primarily from Dutch immigrants who speak Afrikaans—a language descended from Dutch but distinct. People of mixed race in South Africa are Coloureds
(many of whom also speak Afrikaans).
Despite the popularity of the term in other languages, Anglo-Saxon is not a synonym for English-speaking, nor even for British. Anglo-Saxon capitalism does not exist.
Call the language spoken in Iran Persian (not Farsi).
Flemings speak Dutch (not Flemish).
Ethnic, meaning concerning nations or races or even something ill-defined in between, can be a useful word. But do not be shy of race and racial where that is the most precise word. American Latinos are considered an ethnicity that can be of any race. Black Americans are generally seen to share a race despite coming from many different ethnicities.