\x00 is interpreted by bash. 0x00 is C. If you tried to use 0x00 in the command I gave, you'd get the md5sum of the four-byte string {'0', 'x', '0', '0'} which is not at all the same thing as the md5 of the single byte { 0 }.

You'd use 0x00 instead if you were writing a C program that printed the string to stdout. (Although you could use \x00 as well, inside a string or character constant: '\x00'.)

As far as I know, # is only used for HTML color codes. I've never used a programming language that interpreted such a string (like #00) as a number in hex.