A opção -w faz com que o grep procure palavras, portanto, ele mostrará crk quando estiver cercado por caracteres que não sejam de palavras. De man grep :
-w, --word-regexp
Select only those lines containing matches that form whole
words. The test is that the matching substring must either be
at the beginning of the line, or preceded by a non-word
constituent character. Similarly, it must be either at the end
of the line or followed by a non-word constituent character.
Word-constituent characters are letters, digits, and the
underscore.
_ é um caractere de palavra, por isso, crk_op não corresponderá a crk com -w .
A regex complicada "[^ ]*crk[^ ]*" funciona porque permite qualquer número de caracteres não-espaciais entre os limites de palavras que o grep requer.
Basta fazer:
grep -rn --include '*.c' . -e crk
Você não precisa qoute . para o diretório atual lá.