Panel って AWT だろ。使うなら JPanel にしておき。

で Panel の API リファレンスを見れば分かるだろうがはっきり言って違いはほとんど無い。
だが Container を Panel と統合した場合、Window を Panel から派生させなければならなくなる。
Panel と Window は似て非なるもの。だから双方に共通する特徴を Container という形で
抽象化して共通のスーパークラスにしたと思われる。コンポジットでツリー化するなら
抽象化した方が良いし。

new でインスタンス化するなら Panel、その他、コンポーネントの親をたどったり、
GridBagLayout のユーティリティメソッドを作るような場合は Window のような非 Panel
でも大丈夫なように Container として参照する。