1) В браузере: в JS переменную рендерится список участников беседы. Как- зависит от требований. Может, статично вместе с HTML-кодом страницы, может, динамически - AJAXом, а может, в "живом" режиме посредством WebSocket. На обработчик события input в поле textarea вешается задача выводить меню участников на позиции курсора, если нажата "собака" @ (чаще всего именно она используется для обращений). Клик на пункте меню добавляет ник собеседника после "собаки"
2) На сервере: получаем текст и регуляркой извлекаем подстроки вида "@никнейм", собираем их и извлекаем из базы данных юзеров по никнеймам их реквизиты, на которые и будем слать уведомления (SELECT WHERE IN).
Более подробные детали реализации проявляются по ходу изучения стека разработки :)