I use spans for taking a group of code and affecting it in some way.
Say I want to make a button that replaces a part of a form with diferent fields; I'd put the stuff to take out in a span, give it an ID then put the stuff to replace it, in another span and give it an ID and a style='display:none;'
then when I want to swap em, use onClick='firstID.style.display="none";secondID.style.display="inline";'
it's simple and effective, all you have to do is deal with the blank forms that become hidden, in your recieving script.
another great use, is if you want to draw a box around something (or really use any kind of CSS style)
it's easier to type
<SPAN style="border:1px black;height:150px;width:200px;"></SPAN>
then:
<table bgcolor="black" border=0 cellspacing=1 cellpadding=0 height="150" width="200"><tr><td></td></tr></table>
to accomplish the same thing