Bem, vamos tentar manter isso simples. Você está tentando, essencialmente, encontrar uma maneira de conectar dois usuários.
Como estou tentando manter as coisas simples, e definitivamente não insinuando que essa é a melhor maneira de fazer isso, acho que a mais fácil maneira de fazer isso é criar uma nova tabela (users_friends) com os seguintes campos:(user_id) e (friend_id).
Bem, digamos que meu user_id é 5. Seu user_id é 10.
Quero adicioná-lo como meu amigo, portanto, adicionaria uma entrada a essa tabela recém-criada com os seguintes valores:user_id =5, friend_id =10.
Então, digamos que você queira exibir todos os meus amigos, você pode executar uma consulta como:
SELECT * FROM `users` WHERE `user_id` IN ( SELECT `friend_id` FROM `users_friends` WHERE `user_id` = '5' );
Com certeza, remover um amigo é fácil, tudo o que você precisa fazer é excluir a entrada da tabela recém-criada ...
DELETE FROM `users_friends` WHERE `user_id` = '5' AND `friend_id` = '10';
E puf, de repente você não é mais meu amigo;)
Então, sim, esses são os fundamentos. Eu tentaria esta solução antes de passar para uma solução que lhe permita mais flexibilidade.