unityと並行してC#を勉強してます。

本とネットで調べながら少しずつですがソースが読めるようになってきたのですが、
概念というか、まだまだ解らない箇所があるので少し伺いたいのですが、括りでよく使用する
(),<>,[]に関して

現在の認識
 () = if( )文や、関数に付ける引数。
 <> = GetComponent<Rigidbody>();等?
 [] = 主に配列、[System.Serializable]宣言か何かなのか?

こんな感じで認識してるのですが、たまに
GameObject hoge = (GameObject)Instantiate(〜…

このような表記があり、なんじゃこりゃ!?
となってます。

今後プログラムを組むのにこの辺の概念も理解した上で進めたいと思うのですが、
適切な説明を見つける事が出来ませんでした。

上記もかなりぼんやりした認識なので、正しい概念などあればご教授願えないでしょうか?