CSS = Cascading Style Sheets
The reson to use it is to "separate content from formating".
What does this mean ?
In the HTML document you only use plain text (content) and the html tags to create tables and paragraphs etc (and add pictures relating to the content).
To this you apply a Style Sheet to get the FORMATING, ie all fontproperties (eg size, bold, lineheight), text alignment (left, right, center), Background pictures, colors etc etc.
This has the benefit that you don't have to repeat color and size for eg every heading or link in the document. This cuts down on size as well as give an relly good tool to keep everything on a site up to date (you just have to change 1 value in your single .css style sheet to update an entire site to use eg green links instead of blue ones).
But this isn't the whole story as CSS is very powerfull in what it allows you to do. You can for instance create multiple layers or framed site using only a singel HTML document from just setting a few values in your .css. This will btw come in quite handy once frames are gone (it's been on the way out of the HTML specs for a few years now and the next spec, XHTML 1.1, is rumoured to be the first not to include frames at all).
CSS level 3 (currently in the making) will bring with it even more powerfull tools, eg vector graphics (I kid you not)