>>89
>GameObject[]型へのキャストの型を、GameObject型にするとエラーになるのはなんででしょうか。

ポインターとポインターのポインターでは型が異なるのは当然。
なぜ型が異なるのか? という所まで知りたければ、もっと専門的な書籍を当たる方がいい。

>代入してるふうにしか読めません。

存在しないTypeをGetComponentで指定するとnullが返るので、
nullがzに代入されたかどうかで存在の有無が把握できる。