Устройство передает свои координаты на сервер.
Сервер хранит базу последних координат пользователей.
По 2м парам координат можно легко вычислить расстояние между ними.
В случае VK это менее легко из за огромных объемов данных, думаю что расстояние они честно не считают, а выбирают по квадратам, это гораздо дешевле.