Automatically opening multiple Apps / TABs for certain projects
I would recommend using a 'boot' shell script to do most of what you're describing and bind it to an iTerm2 profile. You can configure a profile to have a specific window arrangement (it is a feature of iTerm2), see iTerm2 > Preferences > Arrangements to save your current arrangement as a preset.

Then, make a new profile that executes a startup script and applies the aforementioned window arrangement as its default arrangement (iTerm2 > Profiles > Open Profiles > Edit Profiles). Ideally, you would bind launching this profile to a shortcut, like Command + Control + D for one-keystroke access.

In said profile, under the General Tab > Command section, the startup command should be a shell script akin to below:

I don't know why it's necessary for you to open up the sublimetext frontend and backend in different terminal windows. Whenever you run subl, it opens the app as a daemon, as subl is just a python wrapper that launches the OS X app.

Sample rough startup.sh script I scaffolded up for ya:

#!/usr/bin/env bash

cd ~/to/project/backend
open . # open Finder window of backend folder
subl . # open SublimeText instance of backend folder

cd ~/to/project/frontend
open . # open Finder window of frontend folder
subl . # open SublimeText instance of frontend folder

# Launch chrome and navigate to http://localhost:8000/ or wherever your dev location is
open -a "/Applications/Google Chrome.app" 'http://localhost:8000/' 

echo 'COME AT ME BRO'


You should change the settings on SublimeText to not remember your window/tab arrangements from previous launch instead of attempting to script it to close all of your windows from before.

Alternatively, you could have subl open a native, .sublimetext-workspace or .sublimetext-project file and achieve more precise results than with subl .