1. git-gui and gitk do the job just fine. I never felt a need for anything else. I have no idea what Tower or Sourcetree does, but doing stuff with git is less than 1% of my development time, so really fail to see what I could be missing?
2. I developed some cross-platform gui programs using wxWidgets and wxFormBuilder was fine. Not Delphi level of WYSIWYG but did the job quickly.
3. What's that, care to give an example?
The reason I switched to Mac after 12 years on Linux was because I got tired of having to fiddle with the system. It's nice when you have a lot of time or while you are learning a new OS, but these days I just want things to work out of the box.
I was seriously considering Windows at one point, but then I got a Mac Mini to develop some iOS stuff. Initially, I set it up as dual boot, but I spent more and more time in OSX and finally just stayed there all the time. Installed software I was missing and done.
I wish Linux all the best luck and I'm still using it on servers, but I'm not sure it can reach that level of Things Just Working(tm). Windows has a huge number of payed developers to make it happen. Mac has locked themselves down to just a couple of types of hardware and manage to do the same with less people. It seems to me that Linux tries to cover the widest possible hardware range with comparatively smaller team - and many developers don't care about UX that much. I know, because I developed some open source programs, and I'm guilty of that as well.