I've wrote this command line: "if [ "$DESKTOP_SESSION" == "gnome-shell" ]; then (unity-2d-shell) ; fi". If I type it into a terminal then the 2D unity launcher would start and would work like a charm on top of the gnome-shell, however, if I add the line to the startup applications, it would have no effect. Is there something wrong with the command line? Or is it just impossible to run the launcher on startup?
The line you have wrote is technically a shell script, not a single command. GNOME's startup applications list does not run a shell for each line item, it just invokes it as a single command. If you really want to run unity-2d over gnome-shell (which is basically not the best idea - see below) you have to make an executable script file out of your line, and run this script from startup applications.
However, mixing these two puts you to a dangerous path. GNOME gets updated (unity-2d - not anymore, apparently), and the two shells may start interfering with each other at any upgrade even though now, according to your experience, they work great. One of possible problems I may imagine is that the two panels will start stacking unpredictably, or hide each other. Another is that some applications are also checking the desktop environment they are running in, and the presence of two shells may confuse them. Consider using GNOME extensions instead.