Several solutions.
1. Use something like [[++site_name]] - [[*pagetitle]] or [[*longtitle]] for the title - this is what I always use.
2. Use a separate template for the home page. I do this if the home page is quite different from the inner pages. While it's fun to shoehorn an entire site into a single template, it's usually really not worthwhile in practice.
3. Use an output modifier - not recommended, as it would be somewhat complicated and would take a lot more processing resources - every tag gets processed whether it gets used or not.
[[*id:is=`1`:then:`[[++site_name]] - [[*longtitle]]`:else:`[[*pagetitle]] - [[++site_name]]`]]
You could improve on this by putting the tags you want into two chunks, one for the home page and one for the other pages, then do this
[[[[*id:is=`1`:then:`$homechunk`:else:`$pagechunk`]]]]
Notice the doubled outer tags, and no tags around the chunk names; the output will end up either [[$homechunk]] or [[$pagechunk]], and then MODx will process the chunk tags on the next pass through the parser. This way, all four tags won't be getting processed whether or not they get used. But it still means that the modifier has to be processed, then the chunk, then the chunk's tags.