Consulte la Documentación de MySQL , se explican las diferencias entre estos tipos.
Pero para responder a su pregunta, VARCHAR es un campo de longitud definida por el usuario, mientras que los campos de texto tienen un tamaño definido por el sistema:
- VarChar [1-lo que sea (máximo en 65535)]
- Texto pequeño 255 (2^8 - 1)
- Texto 65535 (2^16 - 1)
- Texto medio 16M (2^24 - 1)
- Texto largo 4G (2^32 - 1)
Entonces, uso VarChar cada vez que necesito un campo que sea más pequeño que 255.