"person of colour" is the proper way currently, as "black" kind of just pigeon-holes them to one identity. And that's something to be avoided whenever possible.
Intent is important, but also understanding how your actions have consequences beyond your intent (the road to hell is paved with good intentions) must be considered as well.
See, being from another country that has no problem with this word, I didn't even know I wasn't supposed to say it in America. I would just use it as part of normal language, with absolutely no ill intent.
I'm sure most people are smart enough to realize there's actually no ill intentions behind calling someone "black". Given that, when you choose to openly get offended by it, you are becoming part of the problem. (using you as people in general)
Just like you don't generally take it badly when one says "Blondie" "big guy" or "tall guy".... this is part of what you are, why would anyone feel insulted by that?
The "consequences" you're talking about is potentially offending someone. That's true. But as to where the fault lies I wouldn't be so sure. I really believe that people should just learn to chill, and not go looking for fights whenever they hear a word that they're immediately going to translate as "offending".
In my former country, you can't even say "blind person" anymore, because apparently, that's offensive now. This is just how we keep removing words hoping that people will be better if they stop using them. It doesn't work that way. All it does is rising frustration on the part of the population that want to keep using the language they've been using since they were born, and who don't understand why suddenly something that was perfectly OK is now considered offending.
The word "retard": Yes it's not nice at all, but when people fight and call themselves that, they aren't thinking about making fun or another category of the population. If you're going to remove it ok, but then please no more "oh god", "holy shit" etc, because I get offended by constant religious talks... (No I don't give a crap, but some people do xD)
Probably a stupid example but that's what we're living right now, every single community or even fraction of a community wants its piece of the language to be offended by, and it's becoming quite silly in some extreme cases.
It only takes to look back at old comedy movies to realize how paranoid our modern society has become.