1. А если транзакцию не запускать, а просто выполнить чтение, то какие данные будут прочтены? Блокировка не произойдёт? Или транзакция автоматом запустится?
Простите, что вопросом... на вопрос... А как выполнить чтение, если транзакция не стартована. Любое действие (чтение, вставка, обновление, удаление) выполняются запросами, запросы выполняются внутри транзакций (иногда транзакция стартует неявно для разработчика (с параметрами по умолчанию), но вне транзакции... жизни нет).
2. Зачем откатывать транзакцию, если она была блокирована на входе и никаких неправильных данных прочесть не смогла? Может, просто после снятьия блокировки ей сказали "на, читай", и всё?
Транзакцию надо завершать. Если транзакция ничего не делала, то её можно зафиксировать или откатить... Но надо учитывать и мнение других транзакций... которые могут иметь разные уровни изолированности, разные режимы ожидания... То есть, наша транзакция что-то успела прочитать, больше ничего не делала, и через какое-то время... завершилась (commit | rollback). Но пока она ничего не делала, другая транзакция попыталась какие-то из считанных данных изменить, а ей не дали, поскольку висит блокировка по чтению. И эта вторая/не наша транзакция откатилась. Другими словами, то что наша транзакция "ничего не делает" не означает, что она никому не мешает.
Ещё хуже ситуация, когда наша транзакция что-то поменяла и теперь хочет что-то прочитать. А это "что-то" блокировано другой пишущей транзакцией, которая жаждет прочитать то, что поменяла наша транзакция. Возникает deadlock.