There are very few limits. The only major limitation is that templates cannot be overridden and you need to add new things to existing views using Plugin Outlets. That said, doing that in combination with some CSS usually gets the job done.
You can create new routes and have complete control over how those are laid out.
The back end is more flexible.
So, use the official APIs for as much as possible and rework will be more limited but you will never completely eliminate maintenance work.
It is not reasonable to expect no maintenance … just look at my GitHub account and some of my popular extensions and you will see plenty of "COMPATIBILITY: " commits ![]()
It’s good practice to maintain a staging server where you can test upgrades and see if any of your customisations break - the more custom your site, the greater will be a need for some kind of staging instance - although use of a development instance can help.