Está confundiendo entre transacción y bloqueo. La transacción revierte sus datos al estado original si hay algún error. Si no, moverá los datos al nuevo estado. Nunca jamás tendrá sus datos en un estado intermitente cuando se tramiten las operaciones. Por otro lado, el bloqueo es aquel que permite o impide que múltiples usuarios accedan a los datos simultáneamente. Para responder a su pregunta, select...insert es atómico y, siempre que no se soliciten explícitamente bloqueos granulares, ningún otro usuario podrá insertar mientras select...insert está en progreso.