Нужно ли оборачивать lastInsertId() в транзакцию?
Думаю не желательно использование PDO::LastInsertId(), в особенности если используется постоянное соединение. У INSERT есть опция RETURNING - возвращает id добавленной записи, я думаю это лучшая альтернатива. и да вставка строки и получение ее идентификатора должны быть в одной транзакции.php.net/manual/ru/pdo.lastinsertid.php#102614
вообще по хорошему все должно быть завернуто в транзакцию (минимум одна транзакция на HTTP запрос).
Шансы что lastInsertId бросит исключение примерно равны нулю, но у вас же не один запрос обычно?