"Undercooked" means "cooked too little", al-dente is not "cooked too little", it's "cooked enough" in order to be al-dente. I guess you could say al-dente is more "not cooked too much" instead. Personally I cannot stand pasta that is not al-dente.
(I'm not Italian, this is wild speculation)
I think it directly translates to something like "to the tooth", so I always imagine it meaning a food having a certain kind of "bite".
It simply means that you feel a degree of resistance or firmness when you bite an al dente piece of food, ie. it has a "tooth feel" unlike soft, fully cooked starchy things.
An engineer might say that al dente has more shear strength left than fully cooked.