Block Definition is what defines the bock and is stored inside the drawing. (All the pieces of the block)
Block Reference is an INSERT of a block. It is pretty much just an insertion point and basic information about the Insertion of that block reference, because to display that block it looks the information up from the Block Definition, This reduces the number of actual entities in your drawing.
An External Reference is the same thing, but the definition is stored Externally in another file.
If you want an XREF-to be visiable in your file, that file needs to be available. Binding that XREF to a drawing creates an internal definition that moves the External definition to be defined internally. The Difference between BIND or INSERT is how AutoCAD brings that definition into the drawing. With unique Layer names, linetypes etcs (Basically prefixes on typical; drawing properties) or as an INSERT, Maps all those to current drawing settings.
So in short a Block Reference is looking at something already stored in the Drawing, no need to bind it.
An XREF is stored in a separate file and needs to be available to be viewed, so if you want to bind it you can or send the file along with the drawing referencing it.
Good luck and I hope that helps.