I started using Syncthing for some of my projects after Dropbox stopped syncing files without notice for the third time. The failed Dropbox syncs were related to either C++ or Doconce+LaTeX projects where many temporary build files were being modified often. Syncthing doesn't seem to have a problem with these files, and it is even possible to configure Syncthing to ignore specific file patterns if you just don't want it to sync such files at all.
The default setup in Qt Creator is to have a build folder next to the sources, but after the first big sync failure I configured Qt Creator to always build outside of Dropbox. But I experienced failed syncs after that, even with only C++ sources inside Dropbox and when building Doconce+LaTeX projects.
I mean... there's a certain point where you are now syncronizing "crap" that shouldn't be needed (bin/obj/etc)...
I've been using it for a while now, and though I feel there's room for improvement, it's definitely much more reliable than it used to be before and I haven't had to restart the daemon multiple times.
As for your second question about instant syncing, there's syncthing-inotify [0] which detects file changes immediately (instead of 60 second rescan interval), but I haven't tried it yet.
For syncing outside your local network, Syncthing supports relaying, which I linked in my previous comment.
[0]: https://github.com/syncthing/syncthing-inotify