(a.remove(i) for i in (4, 6))
はジェネレータ式
https://docs.python.org/ja/3/reference/expressions.html#generator-expressions

ざっくり言うと関数を作ってるだけで中身のa.remove(i) for i in (4, 6)は実行されてない(おまけに作った式も変数に保存してない)
なので1つ目のprint(a)は何も変更されてないaを表示してるだけ
gen = (a.remove(i) for i in (4, 6))
b = list(gen)
print(b)
を実行してみよう