The "class" attribute is simply a way to further define the structure of the document. If you're defining the document visually, which is 1) wrong and 2) the way all but one WYSIWYG generators do, then it will be closely associated with the styles. But it doesn't need to be. You can use the "class" attribute for any number of reasons.
Those funny looking O elements are something from XML, but since they're inserted by a Microsoft product you can expect that they're being mis-applied.
The vision for the future is one where we have a number of different mark up languages and we already have a MathML, RecipeML, CML. I've written CalendarML, but so far market penetration has been limited. Take my CalendarML. It's got an EVENT element that takes a required TILE element. Now, if we want to have a document that is part XHTML and part CalendarML we're going to run into trouble. So "they" came up with the idea of namespaces. In any XHTML document you will see:
This means that the TITLE element is actually a http://www.w3.org/1999/xhtml:TITLE element. That's a little too much to keep typing so we can either define a default namespace, as we usually do with XHTML but that can change within the document, or we can define a something like a namespace handle:
[font=monospace]<html xmlns="http://www.w3.org/1999/xhtml" xmlns:cal="http://someplace/">[/font]
Then I would distinguish my TITLE element with "cal:title". With XSL stylesheets you end up with HTML and XSL freely intertwined so you have to make much use of these prefixes.
I should note, however, that no matter how much I tried I couldn't get my CalendarML to work with namespaces, so I defined it as an extension of XHTML, meaning that I just inserted a few things into the XHTML 1.0 DTD, but I removed the namespace.