Поясню на примере шелла - мне кажется, это проще всего.
Допустим, есть некая программа, запускаемая с командной строки. И эта программа интерпретирует свои аргументы так, что звёздочка имеет какое-то особое значение. Например, find откуда_искать -name маска_для_поиска
- и маска_для_поиска вполне может содержать звёздочку.
Однако, если я напишу маску_для_поиска просто так - то шелл увидит там звёздочку и станет интерпретировать её по-своему, в результате чего find получит не то, что я хотел ему передать, а что-то иное. И чтобы шелл не своевольничал - я должен экранировать звёздочку и прочие спец.символы.
Другой пример - форум с хранением содержимого в SQL-DB:
Понятно, что юзеры имеют законное право использовать в тексте любые печатные символы; в т.ч. и те, которые являются спец.символами в SQL. Соответственно, при формировании SQL-запроса - спец.символы надо экранировать, иначе возможна SQL-инъекция.