Regshot gives a hint of what might be needed to move stuff, but catches a lot of Windows being, well, Windows and making changes even as it's being scanned *for* changes. AARGhh.
If you think Regshot captures a lot of useless data, &/or that Windows has a lot going on under the hood, check out Process Monitor from Sysinternals at microsoft.com. It can be an eye opener the 1st time you run it. ;)
At any rate, in case it's useful at all to anybody...
The best way I've found to monitor software & software installation [& uninstallation], is to use InstallWatch Pro in a XP Pro VM with hardly any software installed. The reasons for a VM in this case are 1) it's easily restored, so it doesn't accumulate files/folders/reg entries from software installs, 2) nowadays there's little if any difference vs. win7/8/8.1/10 in the core results you're after, yet there can be orders of magnitude less worthless data, 3) having a copy of Windows with no software installed is kinda useless for anything but testing.
The main reason I don't want software installed is that shared files are so common -- that's part of the original basis for Windows after all, not having each program supply it's own drivers etc. And if a software install adds something you've already got, how will you know? The 2ndary reason is that if you're going to do before/after snapshots to compare, the fewer files you have to record, the less time it takes.
As that applies to locating software where you want, or moving it afterwards...
While I did move a bit of stuff off my win7 system disk/partition when I added a SSD late last year, my main, constant concern is the effects of an install on Windows. [A big ego is apparently common among developers today, since they seem to assume you'll not bother with any other software once you install their pride & joy.]
Long story short, I see what an app needs after installation [as opposed to what it adds or changes], & very often I can skip running the setup routine on or in my regular copies of Windows. When a 64 bit version of an app is available, I'll monitor the 32 bit version in my XP Pro VM, & so know where to look & what to look for in a win7 64 bit VM, where Regshot 2 might also come in handy.
I save a 7-zipped copy of the files that are installed, & that are needed [e.g. I'll usually skip the C/C++ runtimes if I've already got them installed]. An example: Files added in a folder under Username\ Application Data\ in XP Pro go in a 7z file named UsrAppDta.7z. They'll often be recreated by running the app in win7 64, but if not, the expanded files will go in Username\ AppData\ Roaming\. I save a text log of files added, & one of files modified. I save copies of registry adds & changes.
That generally lets me put software where I want -- if there are any paths stored in the registry, a simple find/replace on the .reg file opened in Notepad takes care of it. If I later want to [re] move it, a look at my saved records tells me everything I need to know. Often, especially if I'm a bit unsure whether I'll keep an app, I'll save the file added & modified logs along with the .reg files in a .7z file in the app's folder.
I've got it down to where all that takes me very little added time, but I have no idea if anyone's ever going to be interested in what seems like a lot at 1st glance. If some part of that works for you, you might reduce the impact of software installation, sometimes very considerably -- you might avoid software that really is nasty to Windows -- you might often avoid software that would be incompatible with what you've already got -- it might be easier to put software where you want, & you might more easily move it [or remove it] later.
The closest I can imagine to a Gotcha, is that you will have to become experienced in what is garbage & what is not. It's not hard, & you don't have to be smart or have any special training or anything -- you just have to become experienced by looking at logs or records & such when you monitor installs, with an occasional foray using Google/Bing. It really doesn't take long before you start to recognize the types of registry entries that are most always added during an install, &/or when you run any app -- you quickly learn to ignore them.