@CharlesDec 14.2008 — #CSS describes how certain parts of an HTML or XHTML document ought to be presented, though it could be applied to SGML and XML documents as well.
XSL describes how some XML ought to be transformed into something else. Let's say you have some data or document marked up in XML, and XHTML is XML, you might have one XSL stylesheet that transforms the document into plain text, another to generate an RTF version, one to generate a full HTML or XHTML page with headers and navigation and CSS, and another to generate a Formatting Objects version. Formatting Objects are a way to describe how to layout the printed page and can themselves be transformed to text, or PDF or displayed directly. Formatting objects are way complicated and a nuisance to write which is what they invented XSL for. XSL comes in two flavors: the original XSL-FO (XML Style Sheet Language-Formatting Objects) and XSLT (XML Style Sheet Language Transformations).