Well, failed records will go into a "bad" file (you define that as part of the external table declaration).
You can then define an external table on that bad file (even if its just one column varchar2(4000), and use that to count/diagnose the bad records).
Total load counts are the same as any normal table, eg
declare
rec_count int;
begin
insert into MY_TABLE select * from MY_EXTERNAL_TABLE;
rec_count := sql%rowcount;
end;
Also, check out my video on DML error logging
https://www.youtube.com/watch?v=8WV15BzQIto Hope this helps