I'm assuming you have basic HTML skills and know how to code a simple page. If that's not the case you can get all the necessary basics by reading the HTML beginner tutorial first.
Originally HTML was only used and intended for structure and semantics. Web browsers were supposed to take care of the layout. As the two major browsers Netscape and Internet Explorer at that time started to add their own HTML tags such as <font color="red">...</font> and attributes such as <img border="5" src="..." alt="..." /> to allow coders to change the appearance, HTML documents eventually turned into a mishmash of content and presentation.
To solve this problem and separate content from presentation W3C created CSS in 1996 which was quickly adopted by all major web browsers. In 1998 W3C extended the original specification to create CSS 2.0 followed by a minor CSS 2.1 update. CSS 3.0 is currently still in draft and hardly supported by any browsers as of this writing (Firefox 3, IE 7, Safari 3, Opera 9).
So essentially CSS (cascading style sheets) is a language that applies styles to a HTML document and its elements to change the look and feel and is usually stored in separate .css style sheets which can be re-used for all your web pages. The picture below illustrates this concept:
img {border:5px solid red}. This saves a lot of time as opposed to changing every single image tag in all your pages.The good news is that there are almost no disadvantages. The bad news is that the only real disadvantage is ... *drum roll* ... Internet Explorer's CSS support. IE handles some things a bit differently than Firefox and Co. which follow the W3C standards. This can sometimes cause unexpected display bugs in IE such as the box model bug while it works fine in all other browsers.