Lo que tienes que usar es SQL (Mysql) bien ... con unas pocas instrucciones SQL en la consulta tal cual la que comentas de ORDER BY fecha .. y DESC / ASC (ordenado ascendente o descendente) .. lo tienes facil y rápido ..
Lo otro de las fechas para mostrar registros con fecha mayor que hoy ... Idem . con un simple WHERE fecha > NOW() lo tienes ..
Revisa este mensaje .. se habla exactamente de lo mismo:
http://www.forosdelweb.com/showthrea...hreadid=109566
Liarse con "date()" de PHP es perder el tiempo y complicarse si realmente solo necestias hacer ese tipo de listados de registros bajo esas condiciones de fecha .. A todo esto .. tus campos de fecha han de ser DATE/DATETIME/TIMESTAM o similares de fechas .. no un campo propio tuyo de fecha (tal vez un VARCHAR) que te guardes la fecha con tu formato peculiar ...
Un saludo,