<div id="left"></div>
<div id="mid"> I will be placing all other div tags in here</div>
IMO, use your divs for generic containers, but before typing "<div...." yet again, think: is there a semantic element for this content?
<div id="left"></div>
<div id="mid">
<h1>The main page title</h1>
<p style="float: right; width: 150px; background: #e6e6e6; border: 1px solid #000;">I'm a sidebar or inset box that hangs to the right of this column, but I don't need to be a div. Of course you would put the styles in an external style sheet. As a <p>, the natural padding reduces the need for extra markup.</p>
<p>This is a
paragraph that would flow around the floated one. </p>
<ul>
<li>This is a list</li>
<li>This is a list</li>
<li>This is a list</li>
</ul>
</div> <!-- end mid -->
You can style any element to emulate another, for example, lists don't have to be indented with bullets, but they can still be lists. If you don't like the spacing around paragraphs, style it. I'm working on a project now with horrors like this:
<div>
<div>
<div>
<div>
Some content that should be a paragraph <br><br>
</div>
</div>
</div>
</div>
In truth that it a dumbed down version, it's actually far worse, nested divs up to 20 levels deep . . . there is a point at which divitis is not curable, it's terminal. :-)
Same is true of span:
<span style="font-weight:bold; color:#ff0000;">Why not just use <strong> or <b> and add a strong/b class to the style sheet?</span>
I'm not a fan of "zero out everything"
* { margin:0; padding:0; }
but would rather go with the natural flow of document rendering and only apply styles as you need it. Comparing the two methods, it seems like the CSS gets far more complex when everything is zero'ed out.