@gloomyandy - thanks for your thoughts on this topic. I would really like to understand the state changes in the system through the tpre and tpost execution steps. It's not clear (at least to me) in the documentation.
My advantage in putting all my operations into tpost is slight - simplification of the macros I need to maintain, and teach to others to maintain. And I'm one of those people that wants to understand why.
Reading the current documentation, it isn't clear that tpre operates with state.currentTool = -1, which I believe is required for moves to be in machine coordinates and not tool coordinates (hence my obtuse question about "selected"). As a result, in my tpre, I preface all moves with G53 to force machine coordinates to be used.
And about aborting tool changes and the system assuming tpre has completed - I currently have no abort logic, though I've been thinking about adding some inputs to detect successful tool capture. I'll need to think some more about what to do in an abort situation. These may be the good reason to use tpre.