Here is a link to a really good explanation of MTC/Tick/Song Position Pointers etc http://midi.teragonaudio.com/tech/midispec.htm. Link is great for improv jams, and many other uses - however, last person joining session always dictates tempo - and if you stop/start (continue), isn't most effective. Link has a guaranteed latency of less than 3ms - but the latency itself jitters within that limit, so it's effective enough - but not designed for lock. MTC is most accurate (absolute time), especially if syncing to video (it should have different resolutions to support the 4 formats). Midi Clock - as mentioned carries start, stop, continue. SPP - Song Position Pointer can be sent along with Midi Clock for bars/beats/measures, down to high resolution. MIDI Clock (and SPP) are System Common messages - so are sent to all devices at all times, which can cause feedback loops, especially when using MIDI-Thru on hardware. MTC is channelized. Running Status is also helpful, as it allows the messages to be truncated, causing much less traffic. Live, by example, doesn't send out MTC - but does use MIDI Clock, and of course Link. I wrote a handy article on how I generate & sync MTC from Live to External Software using a free M4L/Max Device, along with some apps that handle MTC on iOS (MidiFlow & MTC Generator). https://aud-ios.com/2017/01/29/midi-timecode-generation-sync-from-ableton-to-ios/
There are valid use-cases for each protocol, especially as hardware may only support some version or another. Clock Drift, Latency, transmission media, O/S, Jitter - all can adversely affect sync. USB - by example, is not great for Clock as endpoints can't see/sync to each other, only to the USB clock. Live uses Delay Error Compensation, Negative Track Delays, and automatically adds latency to certain plugins and internal instruments to allow the processing time to catch up. (I'm using Live as example as I'm familiar with it). Anyways, VIP stuff!