The extra bytes are for a hidden pointer to a System.TMonitor instance (not to be confused with Vcl.Forms.TMonitor). Every TObject instance has an optional TMonitor instance associated with it. The actual TMonitor instance is created the 1st time it is accessed, but the parent TObject's InstanceSize includes space for a pointer to the TMonitor instance.
AFAIK, yes.
Read the TMonitor documentation, and also see What is TMonitor in Delphi System unit good for?
You could, yes. You would simply call TMonitor.Enter(obj) and TMonitor.Exit(obj) where needed.