Non avendo un'idea chiarissima della situazione posso solo provare a darti qualche suggerimento.
Per ricavare solo i nomi degli amici potresti fare così
codice:
select u.username from utenti as u
inner join (
select distinct if(from_friend=$id_utente,to_friend,from_friend) as amici
from amicizie
where (from_friend=$id_utente or to_friend=$id_utente) and request_status=1 and friend_blocker=1) as tab
on u.id = tab.amici
order by u.username
mentre per avere pure tutte le informazioni della tabella amicizie
codice:
select a.*,u.username as nome from amicizie as a
inner join utenti as u on if(from_friend=$id_utente,to_friend,from_friend) = u.id
where from_friend=$id_utente and request_status=1 and friend_blocker=1
union
select a.*,u.username from amicizie as a
inner join utenti as u on if(from_friend=$id_utente,to_friend,from_friend) = u.id
where to_friend=$id_utente and request_status=1 and friend_blocker=1
order by nome
ma in questo caso non so se sia contemplata la possibilità di reciprocità (tizio e caio rispettivamente from e to e viceversa) e come debba essere gestita, con l'esclusione o meno del doppione.
Spero di esserti stato comunque utile.