Você está certo, sempre há um contexto em algum sentido. Eu não acho que você possa entender o que "contexto" significa em "livre de contexto" sem entender uma produção.
Uma produção é uma regra de substituição. Ele diz que, para gerar strings no idioma, você pode substituir o que está à esquerda pelo que está à direita:
A -> xy
Isso significa que a sequência abstrata A pode ser substituída pelo caractere "x" seguido pelo caractere "y". Você também pode ter produções mais complexas:
zA -> xy
Isso significa que o caractere "z" seguido da sequência abstrata A pode ser substituído pelos caracteres "x" e "y".
Uma produção sem contexto simplesmente significa que existe apenas uma coisa no lado esquerdo. O primeiro exemplo é livre de contexto, pois A pode ser substituído por "x" e "y", independentemente do que vem antes ou depois dele. No entanto, no segundo exemplo, o caractere "z" deve aparecer antes do A e, em seguida, a combinação pode ser substituída por "x" e "y", para que haja algum contexto envolvido.
Uma gramática sem contexto é apenas uma gramática com apenas produções sem contexto.
O segundo exemplo é realmente um exemplo de produção irrestrita. Há outra categoria entre livre de contexto e irrestrita chamada "sensível ao contexto". Um exemplo de produção sensível ao contexto é:
zA -> zxy
A diferença é que o que vem antes de A (e depois) no lado esquerdo deve ser preservado no lado direito. Isso significa efetivamente que apenas A é substituído, mas só pode ser substituído no contexto apropriado.