Короче говоря, один - это класс, а другой - функция. Для функции только эта функция получает доступ к закрытым членам. Для класса весь класс и все его функции получают доступ к закрытым членам класса, к которому относится поддержка.
Ключевое слово friend используется для предоставления доступа к личным данным участников. Иногда вам может понадобиться вспомогательный класс или дополнительный класс для доступа к закрытым членам другого класса. Для функций типичным примером является перегрузка оператора. Возможно, вы хотите перегрузить оператор +. Вы можете сделать оператор + функцию объявленной вне класса (чтобы ее можно было вызывать без объекта), и для этого потребуется доступ к данным частного класса.
Проверьте на этом сайте для подробного описания обоих и как их использовать.