Чтобы безопасно скастовать базовый класс к дочернему.
Допустим у вас есть указатель Base* foo, который скорее всего указывает на производный класс. И вы хотите скастовать его к производному, чтобы использовать его функции. Но есть шанс, что это не производный класс в таком случае у вас будут проблемы.
Чтобы избежать проблем можно использовать dynamic_cast(foo). Каст вернёт nullptr в случае, если указатель не указывает на Derived класс.