O número máximo de linhas que você pode inserir em uma instrução é 1000 ao usar
INSERT INTO ... VALUES...
ou seja INSERT INTO TableName( Colum1)
VALUES (1),
(2),
(3),...... upto 1000 rows.
Mas se você estiver usando uma instrução SELECT para inserir linhas em uma tabela, não há limite para isso, algo como ...
INSERT INTO TableName (ColName)
Select Col FROM AnotherTable
Agora chegando a sua segunda pergunta. O que acontece quando ocorre um erro durante uma inserção.
Bem, se você estiver inserindo linhas usando a construção de vários valores
INSERT INTO TableName( Colum1)
VALUES (1),
(2),
(3)
No cenário acima, se qualquer inserção de linha causar um erro, toda a instrução será revertida e nenhuma das linhas será inserida.
Mas se você estivesse inserindo linhas com uma instrução separada para cada linha, ou seja...
INSERT INTO TableName( Colum1) VALUES (1)
INSERT INTO TableName( Colum1) VALUES (2)
INSERT INTO TableName( Colum1) VALUES (3)
No caso acima, cada inserção de linha é uma instrução separada e, se qualquer inserção de linha causar um erro, somente essa instrução de inserção específica será revertida, o restante será inserido com êxito.