ntext
Datos Unicode de longitud variable con una longitud máxima de 230 - 1 (1.073.741.823) caracteres. El tamaño del almacenamiento, en bytes, es dos veces el número de caracteres especificado. El sinónimo en SQL-92 para ntext es national text.
text
Datos no Unicode de longitud variable, de la página de códigos del servidor y con una longitud máxima de 231-1 (2.147.483.647) caracteres. Cuando la página de códigos del servidor utiliza caracteres de doble byte, el almacenamiento sigue siendo de 2.147.483.647 bytes. Dependiendo de la cadena de caracteres, el espacio de almacenamiento puede ser inferior a 2.147.483.647 bytes.
char[(n)]
Datos de caracteres no Unicode de longitud fija, con n bytes. n tiene que estar comprendido entre 1 y 8.000. El tamaño de almacenamiento es n bytes. El sinónimo en SQL-92 para char es character.
varchar[(n)]
Datos de caracteres no Unicode de longitud variable con una longitud de n bytes. n tiene que ser un valor comprendido entre 1 y 8.000. El tamaño de almacenamiento es la longitud real en bytes de los datos, no n bytes. Los datos especificados pueden tener una longitud de 0 caracteres. Los sinónimos en SQL-92 para varchar son char varying o character varying.
La diferencia estriba en la forma que se ALMACENA el campo en la base de datos.
Ejemplo un CHAR(255), SIEMPRE guardara 255 caracteres fijos, mientras que un VARCHAR(255), almacenar solo los caracteres que tenga el campo.