> does it just read out the name of the symbol and leave you to interpret the tone of the sentence?
It can. Or I can set it to pass punctuation on to the synthesizer unmodified, and the synthesizer (the program that actually generates the speech) will generally change the tone of the speech to represent different punctuation. If I'm reading things like Reddit comments, I want the tone of speech to change as a result of punctuation. If I'm programming, I just want every single symbol read out. So I have different configuration profiles set up, that I switch between depending on what I'm doing.
> Are there any common situations it can't handle well?
It still struggles with unicode and emoticons. There is a
$1 to help, but it only has 146 different emojies defined, and there are 1851 of them currently.
However, this is an NVDA thing, probably because it's free and open source. VoiceOver for IPhone and Mac OS knows about all 1851 of them, and handles them correctly. I suspect that propperly reading the poop emoji just isn't a priority for the NVDA developers.