getApplicationContext это метод Context'a, возвращающий класс приложения. Если ты расширишь Application, и укажешь этот класс в манифесте, то getApplicationContext вернёт объект этого класса.
getBaseContext() это метод ContextWrapper'a, который возвращает оборачиваемый Context. ContextWrapper оборачивает произвольный контекст, и проксирует его методы, чтобы как-то изменить поведение.
getContext() это не метод какого-либо контекста. Это может быть метод View, тогда он вернёт контекст, с которым создана вьюха. Например, Activity или ContextThemeWrapper.
Или это может быть метод фрагмента, тогда он вернёт активити, к которой приаттачен фрагмент в данный момент.
Вывод:
getApplicationContext() когда нужно получить доступ к классу Application, например для реализации графа DI.
getBaseContext() когда нужно получить доступ к базовому контексту(очень-очень редко. Когда до этого дойдёт, ты, скорее всего, поймёшь, что тебе нужно).
getContext() когда нужен контекст, но есть только фрагмент/вьюха.
P.S. в вопросе процитирована какая-то белиберда. Не читай ты книги на русском по андроиду.