CSS, or Cascading Style Sheets, were first developed to solve a problem with html 4.0. Since HTML was never anticipated to have tags for formatting a file tags like font had to be used to format the text which created needlessly large code.
To solve this problem, the World Wide Web Consortium (W3C) created CSS which allowed all formatting to be removed from the HTML document and be stored as a separate file which was added to the document though a Link tag.
CSS files have universal browser support and are typically stored in external files. As well as defining how the file looked, CSS enables you to allocate styles to numerous elements via direct, class, id and pseudo selectors, so with just one line you could tell all paragraph tags to be blue, rather than having to add the font tag with a colour of blue to every paragraph element, which can be very time consuming in long docs, specifically if you then decide you want them to be red!
Along with style sheets came Pseudo selectors which enable you to control styles even more like setting a style on just the first row of a table or defining how a link behaves when a mouse hovers on it (a:hover) or when the link is actually clicked (a:active), providing additional capacity to control and style pages.
CSS first emerged in 1996, and has since evolved considerably. Now at level 3 (CSS3) you can define more than ever , even neglecting the requirement for images in some cases. The box-shadow property is slowly becoming normal for browsers, and enables web designers to tell the browser to render a shadow for a box, rather than having to create the image, reducing design time, as well as the file size and load time of a page.
Although CSS3 is not supported for all browsers right now, notably IE8, it is evident we can anticipate a lot of exciting things as it is further developed.
Have you used CSS3 much yet?