Если в процессе выполнения программы появляется ошибка, то программа завершается. Try Except это способ отлова таких ошибок(исключений) и описание, то что с ними делать.

try: # Пробуем что-то сделать
     k = 1 / 0 # Деление на ноль
except ArithmeticError: # Отслеживаем на арифметическую ошибку
     print ("Найдена ошибка") # Мы нашли ошибку
     k = 0 # Наша переменная теперь будет равна 0

print(k) # Просто выводим переменную

finally выполняет блок инструкций в любом случае, было ли исключение, или нет. А инструкция else выполняется в том случае, если исключения не было.

try:
    исполяем какой-то код
except Exception as e:
    обработка исключения
else:
    код, который будет исполнен в случае, когда не возникает исключения
finally:
    код, который гарантированно будет исполнен последним (всегда исполняется)

Зачем нужно?

Чтобы сделать код безопаснее и сообщать программисту об исключениях