本来はpublic Animal animal = new Animal();なんだが
Animalクラスがシリアライズされてるのでnewがない
(コンストラクタやnewによる初期化なしでいきなり作られるらしい)
変数animalにはインスタンスの参照が代入されてる

>animalの方は何のためにあるのでしょうか
animalがないとインスタンスが参照できない

使い方だけ知っていればいいので、意味や役割の説明はほぼない
だから「教えてくれ」と言うなら「自分でやんなさい」となるのが正しい