Para a pergunta 1, você pode fazer isso:
find . -name "*.txt" | xargs grep -i "abc" | wc -l
Isso conta o número total de correspondências de abc em todos os arquivos de texto.
E para a pergunta 2, eu criei:
find . -name "*.txt" -exec grep -i "abc" {} + | cut -d: -f1 | sort | uniq | wc -l
Isso obtém apenas os nomes de arquivos exclusivos da lista de correspondências e os conta (o tipo provavelmente não é necessário).
Como apontado por miracle173, grep
vem com um sinalizador "uma correspondência por arquivo" para que o comando possa ser reduzido para:
find . -name "*.txt" -exec grep -il "abc" {} + | wc -l