Cita: TABLA "amigos"
id - id_usuario - id_amigo
TABLA "fotos"
id - id_usuario - fecha - foto - mensaje
Lo que estoy tratando de hacer es, a partir del ID del usuario, buscar a sus amigos y traer la última foto de cada uno de ellos.
Creo que te falta una tabla, la de usuarios, porque un amigo de usuario será también un usuario. Creo que necesitas esa tabla en la que id_usuario será PK. Lo que tienes te obligará a indexar id_usuario e id_amigo de la tabla amigos, y creo que la otra será una estructura más eficaz, aunque te obligue a realizar otro cruce. No obstante, te pondré lo que yo haría con lo que tienes.
Si buscamos las fotos últimas de los amigos del usuario con id_usuario 5.
SELECT a.id_amigo, T1.foto, T1.fechafoto FROM amigos a INNER JOIN (SELECT f.id_usuario, MAX(f.fecha) as fechafoto, f.foto AS foto FROM fotos f GROUP BY id_usuario) AS T1 ON a.id_amigo = f.id_usuario WHERE a.id_usuario = 5
No lo he probado