Upgrading has really only been a problem for very early releases (e.g. pre-1.1). If you’re making core code changes, you really shouldn’t be doing that in the first place. Since Magento is built on an MVC framework, all core modifications should be done as hooks or extensions, not direct editing of the code.
If you’re concerned about upgrading though, set up a staging area. Duplicate your current setup on a subdomain and setup a new database. That way you can test the upgrade process up and know for sure what will happen.
I see what you mean, but are you saying I will “use hooks” to remove things like the “bug report” and many other similar really weird default items? or do I , in fact, have to manually go “into the code” to strip out things like what I just mentioned each time an upgrade comes along.
Well when it comes to most MVC frameworks, it usually all about just extending a class and then overriding the methods with your own.
The hard part is just getting it to visualize exactly what gets loaded on each page, which can take some time to learn and get used to.
If you are like me, basically I try to abstract all the functions created by default to my own set of functions and classes. This gives me ability to update/modify/add anything I wish without the entire structure ever breaking whenever there is an upgrade, etc…