Dê uma olhada na Documentação do MySQL , há as diferenças entre esses tipos explicadas.
Mas para responder sua pergunta, VARCHAR é um campo de tamanho definido pelo usuário, enquanto os Campos de Texto têm um tamanho definido pelo sistema:
- VarChar [1-qualquer coisa (máximo em 65535)]
- TinyText 255 (2^8 - 1)
- Texto 65535 (2^16 - 1)
- MediumText 16M (2^24 - 1)
- Texto longo 4G (2^32 - 1)
Então, eu uso VarChar sempre que preciso de um campo menor que 255.