Система в большинстве случаев сама освободит почти все ресурсы при завершении программы. Есть исключения, но они довольно редки.
Но вот представьте ситуацию: прошел год и вы решили использовать код, который написали в этом проекте. Т.е. ваш старый код будет вызываться и завершаться в новом окружении (новой программе), но новая программа еще продолжит работать, а ресурсы не освобождены. И возможно новая программа захочет вызвать ваш старый код не один раз, а 1000 раз например. Вот тут-то вы и словите все утечки, которые оставили год назад.
Еще вариант: часто в embeded системах нет полноценной ОС и там нет такой роскоши как освобождение ресурсов при завершении процесса, т.к. часто нет и понятия процесса. Т.к. вы пишете на С++, то нельзя исключать, что когда-нибудь жизнь занесет вас в эту сферу.
Кстати, этот вопрос не связан конкретно с SDL, он вообще про все что угодно, что может быть захвачено и освобождено вашим процессом.
Так что освобождайте все что захватывает ваша программа явно в вашем коде и не надейтесь, что кто-то это сделает за вас.