Hola.
Puedes solucionarlo de dos maneras:
1. usando un condicionante. Esto te sirve para pocos valores, como es tu caso. seria lo siguiente:
Código:
select * from tu_tabla order by case estado when 'pendiente' then 1 when 'aprobado' then 2 when 'rechazado' then 3 else 4 end
2. usando una tabla de estados vinculada y con un campo de orden.
tabla 'estados'
id
descripcion
orden
y en tu_tabla, en lugar de un campo de texto 'estado', tener un campo int 'estados_id'. Luego, al hacer la consulta seria
Código:
select loquesea, estados.descripcion from tu_tabla left join estados on tu_tabla.estados_id=estados.id order by estados.orden
si algo no te queda claro, me lo dices
saludos.