Me temo que esa solución no va a funcionar,
@sonics2008, porque estás ordenando una consulta que sólo devuelve un registro, ya que está filtrada (where Id_usuario=...).
La solución es juntar las dos consultas en una con un join, por ejemplo, suponiendo que Usuaro tiene (id_usuario, nombre, apellidos) y Amigo tiene (id_usuario1, id_usuario2, estado)
Código:
SELECT nombre, apellidos FROM Usuario, Amigo WHERE ((id_usuario2=id_usuario) AND (id_usuario1='$sesion') AND (state=2)) ORDER BY '$ord' DESC
El id_usuario2=id_usuario mezcla las dos tablas según el id del usuario 2, el id_usuario1='$sesion' obliga que el usuario 1 sea el de la sesión y el state=2 fija el estado. Con el order by consigues ordenar la tabla por nombre o apellidos. Para hacerlo, utiliza lo que te dijo el otro compañero, pasa como parámetro en la URL ord=nombre u ord=apellidos, luego la rescatas con:
$ord = $_GET['ord']
Un saludo.
PD: aclarar que ese select sólo va a sacar los amigos del usuario de la sesión cuando en la tabla Amigo dicho usuario esté en id_usuario1, si también quieres sacar cuando esté en id_usuario2, hay que complicarlo un poco más.