L'ho gia` spiegata:
<div> e` di default un oggetto di tipo blocco
<span> di tipo inline

Un blocco ha uno spazio suo fisso, un inline viene inserito dentro la linea.
Un link (tag <a>) e` di tipo inline (puoi anche avere un acapo nel mezzo, se il pezzo linkato e` lungo).

Di default i blocchi vanno a capo.

Il

e` un oggetto di tipo blocco, che pero` non puo` contenere al suo interno altri oggetti di tipo blocco.

Quindi per attribuire caratteristiche diverse ad un pezzo di testo, si usa <span>; per delimitare una struttura logica si usa <div>.