argv [1] — имя исходного файла, передано первым параметром командной строки
argv [2] — имя нового файла, передано вторым параметром командной строки
FALSE — что делать если целевой файл уже есть? тут внимательно — если задана истина и файл уже есть, функция вернет ложь и ни чего не выполнит, если ложь — он будет перетерт, а функция вернет успех — то есть буквально — «сохранить или нет? существующий файл»
возвращает логическое значение успех/неудача
! — инверсия логического значения — то есть читать — если-не-что-то-там...