ぐぐりづらい系。なんでこうなってるんだっけ?というのをよく忘れる。

$ ps | grep nginx

だと、psの結果は

nginx
grep nginx

こうなる。どちらもnginxにマッチしてしまう。

$ ps | grep [n]ginx

だと、psは

nginx
grep [n]ginx

こうなる。grepは[n]ginxを正規表現として解釈するから、
grep [n]ginxはマッチしなくなる。

正規表現の[n]ginxgrep [n]ginxにはマッチしないため。
[]が邪魔なのでマッチしない)