VARCHAR(n) - строка переменной длины с лимитом n (байт или символов в зависимости от СУБД и кодировки). В MySQL до 65535 байт для строки; индексы можно строить по полному или префиксному ключу.
TEXT - длинный текст без лимита в определении (в MySQL TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT). В PostgreSQL TEXT и VARCHAR без ограничения почти одинаковы. Для текста без ограничения длины обычно используют TEXT; для коротких кодов/логинов - VARCHAR с разумным лимитом.