Невозможно с уверенностью узнать, являются ли два файла одинаковыми, если вы не сравните их байт за байтом. Это похоже на то, как вы не можете гарантировать, что коллекция содержит или не содержит данный объект, если вы не проверите каждый элемент в коллекции.
Контрольные суммы в основном хэш. Насколько они хороши для ваших целей, зависит от того, насколько критически важно ваше приложение. Конечно, можно создать хеш-функцию с низким риском столкновения; В конце концов, пароли хэшируются даже в ситуациях, когда они защищают конфиденциальные данные, и вы не хотели бы иметь второй действительный пароль в своей учетной записи. Если вы не пишете код, скажем, для банка, сильный алгоритм контрольной суммы должен обеспечить очень хорошее приближение.
Использование нескольких контрольных сумм повысит надежность тогда и только тогда, когда в разных алгоритмах контрольной суммы используются разные хеш-функции.
Ваш третий вопрос уже решен ответом leonbloy; MD5 и SHA-1 являются общими.