All these use cases are covered by the Message button in users cards.
If you wanted to send a PM to a user, with a quote to something they said in a public topic:
In the post that contains the text you want to quote, click on the user’s username, and then click on the Message button:
The composer for the PM will open in the public topic, so you can highlight the text to quote as you would normally: