Tomcat has 2 types of constituent components: shareable components and per-instance components.
The default single-instance Tomcat has both types of components within a single directory tree, which I usually refer to as TOMCAT_HOME, since I can never remember the difference between CATALINA_HOME and CATALINA_BASE. This is purely laziness on my part, as there's nothing officially named "TOMCAT_HOME".
Fortunately, I know where to look it up when I need to.
CATALINA_HOME refers to the shareable components. They include the lib and bin(?) directories.
CATALINA_BASE refers to the per-instance components. They include conf, work, temp, log, and webapps. The reason I put a question mark next to "bin" under CATALINA_HOME is because there's one non-shared file under bin, which is the setenv.sh/setenv.bat file. Reading between the lines in the RUNNING.txt file under my "TOMCAT_HOME", I get the impression that Tomcat may overlay the CATALINA_BASE bin directory over the CATALINA_HOME bin directory, making them effectively the same directory. But I'm not 100% certain.
In the simple case of a single Tomcat, CATALINA_HOME and CATALINA_BASE both reference the same directory ("TOMCAT_HOME"). If you set one, before launching Tomcat, the other one will inherit the same value.
If, however, you want to run multiple Tomcats off the same binaries/libs, you'd clone the Tomcat directory and delete the bin and lib subdirectories, then launch the cloned Tomcat with CATALINA_HOME pointing to the original Tomcat directories and CATALINA_BASE pointing to the cloned directories, which you would have configured with its own CATALINA_BASE/conf/server.xml file and webapp deployments (in CATALINA_BASE/webapps or via CATALINA_BASE/conf/Catalina/localhost or both). You would DEFINITELY have to have a different server.xml, since Tomcat, like all programs that listen on TCP/IP ports can only have one Tomcat instance listening on a given port set.
So, for example, you might have Tomcat 1 using CATALINA_BASE=CATALINA_HOME using the out-of-the-box ports (8080, 8005, 8009, 8443) and its deployed webapps. Then you might have Tomcat 2 using a different CATALINA_BASE whose server.xml was set for ports 8180, 8185, 8109 and 8543. The actual choices for port numbers is up to you as long as no other app is using them AND as long as the port number is 4096 or higher (since in most OS's, ports 0-4095 can only be acquired by privileged users).
Other than that, the only constraint is that all Tomcat instances sharing the same CATALINA_HOME are going to be running the exact same version of Tomcat. If you wanted to run a Tomcat 6.0.28, 6.0.34, and 7.0.41, there would be 3 CATALINA_HOME settings, one for each of the 3 versions of Tomcat. Or you might for some reason want to have 2 physical copies of the 7.0.41 release in 2 separate directories, and each of them would require a distinct CATALINA_HOME, since CATALINA_HOME is what points to the specific set of shared binary files.