So from my experience there seems to be persistence between flow runs. So I see both cases happening.
1. The flow runs successfully to the end but 'last error' gives me an error value instead of 'No Error'
2. The flow fails but 'last error' gives me a 'No Error' value. But this maybe due to my 'Get last error' actions residing at the very end of the flow so perhaps as soon as the error is thrown (somewhere in the middle) it never gets to this one, last 'Get last error' action. On the other hand, it would be quite cumbersome to have a million 'Get last error actions' strewn around, after every action that may throw an error.
My advice would be to give, for every action that might throw an error, the ability to set a variable 'with the value of the error that this action threw, so that I can output it for some other triggering flow to get.
For example, now, if I run\trigger a PAD flow with another PAD flow, and something goes wrong in the first PAD flow, the other PAD flow will not get a clear messages as to which action (or variable name) exactly, threw the error (in the same way you can get via Monitor > desktop flows in the power automate portal or even via cloud flow triggers, which are usually more vague than the ones I get in Monitor > Desktop flows.)