The only real edge case is when for some reason the package you want to use is extremely outdated or borked. e.g: I use FreeSwitch on CentOS, but the package manager's plugins don't work correctly unless I build from source and teak some parameters for my liking.
Is there a specific subfolder I should be installing compiled programs to? IE /opt instead of /usr/bin ?
No, usually somewhere that's easy for you to remember where it is when your done is fine. Heck /tmp folder is fine, if it's small enough.
Is there a way to specify the subfolder?
If you mean by downloading it, most cases only where you put the source code. Unless you mean the installation part, most of the time no, unless the devs added a method inside their 'make install' for you to do this. But even then if you are hell bent on where your program lives, you can use symlinks.
Is there an easy way to uninstall said programs when I am ready to do so?
Sometimes the downloaded makefiles will have a "uninstall" command. If not, it's best to consult the source of the program's website or, author or community.
What is the best way to keep said programs up to date when a new version is available?
Depends on the circumstance, if building from source. Lot of the times you can safely clone/download the code again and rebuild it and install it, but sometimes you may need to unistall and re-install the program. Hence why most people like to depend on package managers.
Would it be better to take a program I want and make a .deb so that I can use dpkg or apt?
IMHO, seems like you would be giving yourself more overhead if you are using it for one machine and one machine only. But if you have a cluster running on the same OS, making a .deb wouldn't be a bad idea, since it would save you time in the long run.
Someone may have a better answer to these, but this is just from my experience.