Hola,
eso es porque lo guardas como varchar. Hace una comparacion de cadenas (alfabeticamente). Y alfabeticamente 01/12/2005 es menor que el 02/01/2001, porque va comparando caracter a caracter, parandose en el primero que sea distinto, y como 1 es menor que 2.
Yo de ti lo almacenaria como date. MySQL siempre lo almacenara como YYYYmmdd. Pero tu lo podras mostrar como te de la gana, usando la funcion DATE_FORMAT() de MySQL (
http://www.mysql.com/doc/en/Date_and...functions.html). asi tu consulta con los campos date seria:
SELECT *, DATE_FORMAT(fecha,'%d/%m/%y') as fecha_cast FROM $nomtabla where novedad='si' order by fecha DESC
y accediendo al campo fecha_cast para mostrarlo en formato dd/mm/aa. Eso si, a la hora de guardarlo debes hacerlo en el formato YYYY/mm/dd.
Saludos.