В чем разница между Dialog и DialogFragment?

Посмотреть в Telegram: @AndroidSobes/20
Класс Dialog используется для отображения диалогового окна. Использование класса Dialog напрямую не рекомендуется, потому что управление состоянием диалога при configuration changes сложно и неочевидно (не делайте так, если вы не в 2009м). Диалоги были частой причиной крэшей на ранних этапах разработки под андроид. Метод активити showDialog() deprecated начиная с API level 15.

DialogFragment – фрагмент, который содержит внутри себя объект Dialog и выступает как интерфейс для взаимодействия с диалогом. У DialogFragment жизненный цикл фрагмента. Система сама заботится о пересоздании DialogFragment при configuration changes.

Всегда используйте DialogFragment, а не Dialog.