publicとSerializeField使い方はどちらも似ているのですが、
違う部分は、
publicは
inspectorからの操作:可能
他のscriptからの操作 :可能
SerializeField
inspectorからの操作:可能
他のscriptからの操作 :不可
チーム開発している場合には、他のscriptから参照可能な状態だと、間違って操作されてしまう可能性があります。(Unityはpublicを推奨しているようですが….)
inspectorから操作したいだけの場合は SerializeField を使うのがいいのではないでしょうか。