:: after staring at error messages in blank puzzlement for several minutes ::
Oh. I get it. You're garbling your entities. I thought you'd got entities and tags mixed up.
For starters, ² is a character. You can enter it as-is in both UTF-8 and Latin-1 encoding. If for some reason you must use entities, you can use a named entity
²
a decimal entity
²
or a hexadecimal entity
²
So "REFC delimiter" is just a grandiose way of saying "semicolon". (Yes, OK, I looked it up. Reference Close.) The validator gets very upset when an ampersand is followed by anything other than an entity name.
That's assuming you really do want to use ². There are good arguments against using the ¹²³ characters in HTML. Only those three are in Latin-1. The other numerals are further up in Unicode and will probably not match visually. Superscripts are safer, and you have more control over the result.
In your initial post you said
m<sup>2</sup>
wasn't working. You never did explain what it did wrong, or failed to do right.
Oh, and we never did get around to what any of this has to do with CSS. Except that you can say things like
sup {font-size: 80%; line-height: .5em; vertical-align: 50%;}
et cetera ad lib to make sure your superscripts aren't subject to the whims of other people's browsers.