I'm all for designers learning a bit of the technical background behind colors on the web, but this article is full of technical inaccuracies, misconceptions, and misleading comparisons.
"Tens place"?
"24-bit color" ignores alpha and color palettes
"# means 'This is a hex number'": No, it means a web color expressed as 3 hex numbers.
Plus, I know it looks better to make your colors less saturated, but when you are demonstrating starting from #ff0000 and adding other colors, why not actually display #ff0000 instead of #e93f32?
I have to disagree with how critical you're being. Yes, proof-reading is highly important, but he's writing an article for rather untechnical people (that is the audience: people that don't understand hexadecimal representation of colors). There's no guarantee that these folks know base-16, that RGB means bytes representing each color in said order, or even how that maps to a monitor.
While the original article is somewhat misleading over why hexadecimal works the way it does, it's closer than you. The OP is trying to explain base-16 at the same time he's trying to describe basic RGB handling. Not everyone learns math in other bases at school (I didn't, I had to teach myself) so he had to cover it, and make use of familiar terms like "tens place".
On top of that, the explanation was presented in a highly visual way. There are a lot of visual learners who just don't get it when I try to explain just verbally, or just with the code.
The OP is right: the pound, or hash, sign is how the browser knows that the identifier is a hexadecimal sequence—just like compilers using 0xff00... to indicate hexadecimal numbers. #ff0000 is one hexadecimal number just like #ff000000 is. They aren't separate numbers, they just have different numbers of bits.
So what's going on here? Well, it's all about the bits, because 2 hexadecimal digits can express 0-255 or 1 byte. So this is actually a data structure of 3 bytes left-shifted into a single 32-bit integer.
#ff8060 (16744544) is the same as
// R G B
color = 255 << 16 | 128 << 8 | 96
Colors with an alpha channel shift all that over another 8 bits and then add an alpha channel. So RGBA(0,0,0,0.5) is equivalent to:
// R G B A
color = 0 << 24 | 0 << 16 | 0 << 8 | round(0.5 * 255)
In fact, this latter bit order is probably how the browser stores all the colors now that browsers allow for alpha channels in colors. Yeah, you can store this in a struct if you want (I remember Delphi let me encode a struct to/from a raw unsigned integer automatically by compiler optimization), but in the end this is how the raw color is encoded and sent to the the underlying renderer. Ask anyone that has dealt with OpenGL, DirectX, or anything close to the hardware.
So why are hexadecimals widely used in CSS? Because they represent the actual data structure in memory after all the fancy conversions, like HSL, are done.
Perhaps I misunderstood you, but I felt like writing up an explanation of this anyhow. Might be useful to someone that didn't understand the why.
"Tens place"? "24-bit color" ignores alpha and color palettes "# means 'This is a hex number'": No, it means a web color expressed as 3 hex numbers.
Plus, I know it looks better to make your colors less saturated, but when you are demonstrating starting from #ff0000 and adding other colors, why not actually display #ff0000 instead of #e93f32?
Finally, spellcheck.