When compiling an unfamiliar source package, you should always start with reading its README and INSTALL files, if those exist in the package.
A well-made source distribution tarball should always extract into a single sub-directory relative to where you run the command to extract it. But not all source distributions are well made: you should always check the contents listing first with tar tf tarball.tar.gz before extracting an unfamiliar tarball, and if necessary, create a work directory for that specific source package, cd into it, and run the extraction command there.
If the build process is ./configure; make; make install (i.e. it uses Autoconf), then you can use command-line options in the configure phase to determine where the end result will be installed to. See ./configure --help for a list of options available in the specific source package.
You should probably always use something like ./configure --prefix=/usr/local, ./configure --prefix=/opt/<name of software package>, or maybe ./configure --prefix=$HOME/Desktop/My_Software/<name of software package>
If the build process starts with just make, then there is usually a number of variables in the main Makefile and/or config.h which you can edit to determine the installation location.
Before running make install (which is usually the only part of the process that may need to run as root, depending on the location(s) the program needs to be installed into), it is usually a good idea to run make -n install so it lists out the commands it would run if executed without the -n option, and verify that the target directory/directories are correct.
make clean will usually remove any results of the compilation process from the source code directory and leave any compile-time configuration files intact.
Some, but not all, source code packages also have a make uninstall which would attempt to remove the files installed by make install.
If the main source code directory includes a sub-directory named debian which contains files named rules and control, then the developer has included the facilities to automatically build *.deb package(s) out of that source code distribution package. In that case, you can use the debuild command (or one of its equivalents, like fakeroot debian/rules binary) to build one or more *.deb binary packages that can be installed using dpkg or apt as usual.
If you want to produce *.deb packages from a source code package that does not already have the Debian packaging facilities, it is generally not too difficult to add them. This is sometimes called "debianizing" the source code package. See this link: https://www.debian.org/doc/manuals/debmake-doc/ch04.en.html