A tag is JavaScript code which collects marketing data from a website and then sends the data to a 3rd party service like Google Analytics, Google Adwords, Facebook, etc.
A trigger is a condition which must be true for a tag to execute. A trigger tells GTM when a tag should fire.
The following is an example of a trigger:
{{url}} matches abc.com/cart/thankyou.html
A trigger event is one of the conditions when the trigger should fire/execute. Following are the various events when a trigger can be fired:
#1 Pageview – fire on pageview
#2 Click – fire when a click event occurs.
#3 Form – fire when the form submit event occurs.
#4 History Change – fire when a user’s current browser history changes.
#5 Custom Event – fire when the custom event occurs.
#6 JavaScript Error – fire when a javascript error occurs.
#7 Timer – fire after a given interval.
A blocking trigger is a condition which must evaluate to true for a tag to not execute. A blocking trigger tells GTM when the tag should not fire.
A variable is used to store data that is used in defining a trigger and/or to pass information (like product price, google analytics account id, etc) to the tag(s) at runtime.
I took these definitions from here:
http://www.optimizesmart.com/beginners-guide-google-tag-manager-v2/