ContentProvider не обязателен для работы с бд, но очень стабилен и удобен (да удобен, не смотря на отвратительный интерфейс)
пример работы:
в каком то потоке меняются даные, например что то подгружаются с сервера
это информацию нужно выводить в актуальном виде
с использованием связки ContentProvider + CursorLoader избавляет вас от головной боли, вы не думаете какой у вас счас экран виден, что происходит в другом потоке, вы просто отображаете данные, если надо они сами обновляются
из минусов ужасный апи - кучу нулов в параметрах оскорбляют мое чувство прекрасного
CursorAdapter не поддерживает RecyеclerView (решение гуглится за пять минут)
А, что использовать если доступ другим приложениям не требуется? Есть то, что не устарело?
SQLiteOpenHelper, различные orm ... да и сам ContentProvider не помечен как @Deprecated