Being able to control your styles centrally is a good selling point for CSS, but the real crux of why CSS is such an important move for the industry is that it allows us to keep styles and content completely separated. Using CSS, you can make the visual appearance of a site behave exactly as you want (in theory, anyway), without putting any thought into the markup of the document beyond making sure that all elements are used in a semantic, meaningul manner.
In the past, your decision in choosing which HTML tag to use to mark up a page heading may have been influenced by how that tag is displayed in your browser. For example, if you didn’t like the look of the H1-H6 heading elements, you might be pressured into the simpler route of wrapping some text in a FONT tag and upping the font size to make the text look like a heading. That’s fine for visual browsers, but others, like Googlebot, don’t understand that big font means heading, and that the bigger the font is, the “bigger” the heading is, i.e., higher level. With CSS, if you don’t like how an element looks, you can change it, and all elements, in theory, behave the same.
While any visual user will see big text and understand that the text is a heading, the fact that you wrapped it in a FONT tag gives it absoutely no logical meaning to screen readers, screen scrapers, crawlers, and anyone who has to read your HTML code. In addition, using HTML in the ways required to influence how the document displays in the browser is a messy art and produces yucky, difficult to maintain code.