I know you can do this on Windows (which is helpful since I have a small OS partition) but is it possible to do this on Linux?
Of course it's possible.
At its most basic, this could consist of nothing more than creating an appropriate directory (/bin, say) on the desired volume, adding this to your environment's $PATH variable, and then putting some binary executables in there.
If you're using one of the package managers which puts all its binaries in a special place (like the /opt directory) you can always modify your fstab so that your external volume (or a partition on it) mounts to /opt, which means that /opt is now magically on your external volume: How to edit and understand fstab
If you want all of your software to be installed on a different partition automatically, the easyest way would be a partition containing the content of /usr. This way, nearly every big file being installed with software is put on the separate partition. When doing this, your system won't start properly if the partition can't be mounted on boot, but all the important tools for rescue should be in /bin and /sbin, so this should be fine.
For doing this you have to boot from a livecd and copy the whole content of the /usr directory to the other partition and then edit /etc/fstab of your system to contain the line:
Replace "InsertYourUUIDhere" by the UUID of the partition (you get it by using the command "blkid"). Replace "FileSystemType" by the filesystem type of the partition and replace "MountOptions" by the mount options found in the line with your root filesystem (/).