I'm rather torn about whether or not to break this up into multiple, topical posts as it threatens to be a bit long. We'll see how it goes... (ended up being one very long post)
I recently released a new "Page Preview" package for Episerver 10+ that adds a (somewhat large and obvious) Page Preview button to the author components / gadgets. The add-on is documented in the Git repo linked. This article (or series) is more about creating such a gadget - I'm going to keep it as high-level and logical as I can.
My add-on uses a Partial Router to function, which is merely utilized by the functionality the add-on is meant to provide, not core to the fact that it is a component. So though that is in my code, it's not covered here. I do cover building a partial router in the docs I wrote for my Episerver Ascend 2017 presentation and the topic is definitely worth a Google if you've a mind to check it out.