En principio, si en el WHERE se usan ambos campos del índice, es razonable que acceda al índice. La duda es cuáles son los resultados en cuanto a lectura de registros.
Empecemos con esto:
1) Dinos qué cambia de la performance cuando quitas la última condición, la de "caducado":
Código MySQL:
Ver original AND descripcion
='estudiante' -- AND caducado > CURRENT_TIMESTAMP() # Desactivamos esta condición
;
El objetivo de esta prueba es verificar si el ">" genera un overhead mayor, ya que cualquier condición comparativa de >, <, >=, o <=, suele tener menor performance que la de un "=".
2) Posteanos el resultado completo del EXPLAIN. Así podremos ver cuál es el resultado de la lectura de registros. Eso nos puede indicar con mas claridad lo que ese indice aporta.
3) Para una mayor prueba, quita el índice de doble columna y crea dos indices, uno por cada una de ellas. Luego vuelve a probar.