What is the difference between widget object and widget instance?

The WP_Widget class can be a bit confusing as an object instance of it (a child class must be used) doesn’t represent a specific instance of a widget. It is more of an object to handle all instances of this widget class.

$instance is a variable repeatedly used within the WP_Widget class (and hence also in all child classes). It doesn’t actually hold a reference to an instance of a php Object. Instead it is just an array with settings for an incarnation of a WordPress widget. This array() gets saved to the DB and retrieved again to be able to save the settings for the different widgets.

$this is a pseudo-variable which references the current instantiation of the widget class. So this is actually a reference to a php object instance, but it is not for a specific widget instance.