If you've made changes to the core files you are entering a world of pain.
Ideally, all of your customizations are in AMPs. You can then test your customizations separately from your repo to validate they will work in the version you are migrating to.
I don't know of a good resource that cites the changes between releases other than the release notes. When I do wide-spanning upgrades like you are doing, it is brute-force trial-and-error.
Related to that, remember to backup the database and content store after each successful upgrade so that when you have to rollback (and you almost certainly will, at least once) you don't have to go all the way back to the beginning.