Есть две причины, которые помогают возвращать удалённые файлы.
Традиционное "удаление" файла заключается в том, что в таблице, где хранится расположение всех файлов, удаляется один байт (эта служебная таблица, она занимает небольшое место в начале диска, но пользователю она никогда не показывается). Сам файл остаётся на диске в полной сохранности там же, где он и был, но теперь у компьютера нет полной информации о том, где этот файл находится, поэтому этот файл не показывается ни в одной папке. Но физически он на диске есть (пока что).
Когда вы записываете на диск новые файлы, система сверяется по таблице файлов, в каких местах диска записаны файлы, а какие места - свободны. После того, как вы "удалили" файл, это место теперь считается свободным, поэтому в дальнейшем в это место могут записываться новые файлы. В итоге, со временем, удалённый файл действительно исчезнет с диска, потому что поверх него будет записан новый файл. Но пока этого не произошло, вы можете воспользоваться программой, которая проверит целиком всю таблицу файлов и найдёт "огрызок" от вашего файла (ту самую запись, которая почти целая, за исключением одного удалённого байта) и по ней можно определить всю нужную информацию и вернуть файл на место. Если же поверх файла уже успел записаться другой файл, тогда файл не восстановится.
Операционная система может отслеживать изменения в файлах и намеренно сохранять резервную информацию на тот случай, если пользователь захочет вернуть всё обратно. Современные операционные системы предлагают включить полное резервирование личных данных. В этом случае операционная система постоянно сохраняет предыдущие состояния файлов в отдельное место на диске (или же на другой диск, если есть такая возможность). На это выделяется большое количество дополнительного места на диске. Но до тех пор, пока вам не нужно это место - почему нет? Пользователь ничего не теряет, а польза есть. Если свободное место на диске начнёт заканчиваться, операционная система освободит место, удалив часть резервных копий.
Физически с диска ничего не "стирается". Удаляется только путь к файлу и запись в реестре. То есть информация на диске присутствует, но для компьютера это пустое место. Поэтому и существует возможность восстанавливать удалённые файлы. Но если после удаления файла, вы что-то устанавливаете, то запись идёт как раз на эту "пустую" область и восстановить что-то потом уже проблематично.