There's a few different cases here, but the general principle is that, for many people, words carry emotional or semantic connotations, and we want to use different words to manage these connotations.
1) For the "sexual assault vs. rape" case - Some words may be more unpleasant for many people to hear. Many people may find the word "rape" to evoke more unpleasant emotions than the more muted "sexual assault," so may use the latter in situations where we prefer not to elicit a strong emotional reaction, such as in a professional or therapeutic environment.
2) For the other cases - many people find certain terms more dehumanizing than others. With the homeless example, many people feel that "homeless" has become not just a descriptive term, but a term that carries connotations such as "crazy," "disgusting," "failed," and maybe above-all, "other" - outside the realm of people we consider "us". In contrast, the term "unhoused" carries more of a connotation of a temporary state a person is in, rather than an inherent label or trait of that person.
There is certainly a treadmill phenomenon to this - in a few years, if "unhoused" catches on, and if homeless people are still dehumanized, it's likely that the word will take on a dehumanizing connotation and many will seek to replace it.
> What do we achieve by focusing on words
All that said, while I think language is important, I do agree with you that there is an excessive focus on language and an inadequate focus on actual solutions. I would say that the current economic system and power structures make solving these problems very very hard, and as a result many people focus on policing and adjusting language because it is something that they feel they can actually change.