я все чаще пишу один и тот же ответ ─ читайте про REST.
На сервере любая серверная бд и апи (авторизация тоже по сути просто апи, токен получаете и подписываете им все)
На телефоне реализуете rest клиент (рекомендую связку retrofit + gson), контакты лежат в бд, доступ по Uri
Cursor contacts = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);