Black is not offensive, it is standard terminology in the US and here for someone of black African ethnic origin, though African-American, African-Caribbean and African-British is usually preferred.
Generally, I can tell when people have no ill will so don't get hung up on terminology. My white English grandmother (born in early C20) never stopped saying 'coloured' and we never thought anything of it, given her generation had been taught to say that to be polite. It would rankle if someone of say, 25 did it though-suggests ignorance or uncaring. Still wouldn't jump down their throats though, I would just politely ask to be called something else.
Indian subcontinent I would probably say Asian, or British Asian (people of a minority ethnic group born here don't always like being treated as foreigners, so it is nice to acknowledge we are English/Scottish/British too).
The most important thing is to relax about it and handle it as what it is, a simple fact of life. Please don't treat us as though we are all being chippy or over-sensitive about it. There is a very real history of prejudice (continuing) and we have had to fight for such respect as we currently get. And please don't treat minority ethnicity as something embarrassing or unfortunate to be glossed over, either. When in doubt, ask the person concerned how they would like to be addressed or have a particular issue handled.