jeje está bien tener curiosidad.
todo esto viene de los tiempos del MSDOS y las convenciones a la hora de nombrar los directorios, y de los comodines ke se podían usar. luego, estas convenciones se han conservado en windows.
no puedes poner una barra o una barra invertida (/, \) en los nombres de directorios porke \ es el separador definido por windows para separar precisamente los nombres de los directorios, cuando escribes una ruta de acceso como puede ser c:\windows\system32\... podía haber sido cualkier otro caracter, pero es ese y por tanto no puedes llamar a un directorio "hola\tronco" porke el sistema se haría la pixa un lio ya ke entendería ke te refieres a un directorio "hola", dentro de el cuál existe un directorio "tronco", en vez de a un solo directorio (o carpeta, kes lo mimmo). la otra barra (/) tampoco se puede utilizar ya ke es el separador para otros sistemas como unix/linux, y para servicios de red como FTP etc entonces en una red con distintos sistemas operativos tendrías problemas también con ese caracter, a la hora de navegar y referirte a los directorios.
lo del ? tampoco se puede usar porke es un caracter comodín, esto es, es igual ke el * pero la diferencia es ke * sustituye a una cadena de 1 a N caracteres, mientras ke ? solo sustituye a un caracter. si vas a Inico, Buscar, Archivos y carpetas, y en el nombre escribes *.exe te buscará todos los archivos de extensión exe. y si escribes fichero?.tmp, te devolverá una lista con los archivos ke tengan ese nombre sin importar cuál sea el caracter ke vaya en el lugar del ?, es decir:
fichero1.tmp
fichero2.tmp
ficheroA.tmp
...
por esa razón tampoco se puede usar * ni ? en los nombres de los directorios o archivos, son caracteres reservados. ocurre igual con < > y |, ke son caracteres reservados tb para realizar diferentes operaciones de direccionamiento y "pipes" (creo) cuando trabajas con la línea de comandos, escribiendo scripts, o con el antiguo MSDOS.
espero ke te haya aclarao algo! :-P