Interesante pregunta.
Esto está definido en la html 4.1
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
Aunque en la práctica creo que habrá que evitar : y . para no confundirse en el css
Interesante realmente...