Bienvenida a Foros del Web.
 
Lo primero puedes conseguirlo mediante un simple cálculo: la resta del número máximo de caracteres que puede poseer el DNI menos la cantidad de caracteres ingresados por el usuario. 
¿Cómo logras obtener el segundo dato? 
El elemento que estés utilizando para el ingreso de datos —que supongo se trata de un 
<input> de tipo 
text—, posee una propiedad llamada 
value. Dicha propiedad devuelve el valor contenido en el elemento como una cadena de texto. Todas las cadenas de texto poseen una propiedad llamada 
length con la cual puedes obtener el número de caracteres que componen a la cadena en cuestión. 
Lo único que tendrías que hacer es, primero, definir el número máximo de caracteres que puede tener el dato a ingresar, luego, obtener la cantidad de caracteres ingresados por cada vez que ocurra alguno de los 
eventos del teclado, por ejemplo, el evento 
keypress, el cual se produce cuando se ha pulsado la tecla pero aún no se ha levantado el dedo de la misma (la tecla físicamente aún no retorna a su posición original). Bastará con que 
registres dicho evento a la caja de texto y ejecutes una función cuando este se produzca. En dicha función, tomas a los valores anteriormente mencionados y los restas. Dicho resultado lo puedes mostrar en algún elemento en línea, por ejemplo, un 
<label>. Para establecer el valor como contenido del elemento, necesitas utilizar la propiedad 
innerHTML (para compatibilidad, échale un vistazo a 
esto). 
Para lograr lo último que mencionaste, primero debes saber qué son los 
estilos en el diseño web. Una vez que entiendas eso, sabrás cómo cambiar la apariencia tanto del formulario como de cualquier otro elemento del documento. 
Un saludo