I use tmux locally for multiple sessions. Each session has a different development project. You can achieve the same thing with iterm by having multiple iterm sessions I suppose but I like staying inside one terminal.
Personally, I use environment variables inherited by the multiplexer (and then by any shells inside it) to tune my shell to a particular context. There's therefore a useful difference between "give me a new top-level window" in my window manager and "give me a fresh shell in the same context" in my multiplexer.