They're (imperfect) synonyms. I think “casa” would have been a more precise translation in this case.
“Casă” usually refers to a building inhabited as one unit, whereas "locuință” is more generic place-of-residence kind of thing (including houses, apartments etc).
There need to be multiple correct answers in cases like these. There is no reason why "Casa lui are un acoperis rosu si un garaj." should be deemed incorrect.