The shell may transform the command line before the command execution. Both the shell and
grep may use quoting to remove the special meaning of some characters. Nonetheless,
grep and shells have different special characters. Moreover, unescaped special characters that did not result from an existing expansion are removed, before the command execution, by the shell.
echo '' | grep ''
The shell transmits the argument
grep and it is parsed as a malformed bracket expression by
echo '' | grep \
Above, we can see a similar case. The backslash is removed and
 is transmitted as argument to
grep recognizes a malformed bracket expression.
echo '' | grep '\'
Finally, in this case, the quotes are removed by the shell and
\ is transmitted as argument to
grep but, in this specific case ¹,
\[ is interpreted by
grep as a literal bracket. Quotes are needed to prevent the interpretation of the backslash as a special character by the shell.
¹ POSIX specification.