I am not aware of any rule that says any particular attribute should be private in a class, Java offers other modifiers like protected and public, and no modifier which implies package accessibility. These all are there so that you can enforce the different levels of encapsulation that you may consider appropriate according to your design.
On the field initialization part of the question, I think that when a field is declared in a class, if the field is of any reference type it is by default initialized to null, so you do not need to initialize it unless you consider it necessary or unless the field is declared as final which implies you want to initialize it to a default value.
About the getter and setter part of the question, I believe these are just a way to enforce encapsulation. Allan Snyder in his paper Encapsulation and Inheritance in Object-Oriented Programming Languages wrote:
To maximize the advantages of encapsulation, one should minimize
exposure of implementation details in external interfaces [...] For
example, one characteristic of object-oriented language is whether it
permits a designer to define a class such that its instance variables
can be renamed without affecting clients.
Also the great article by Leonid Mikhajlov and Emil Sekerinski caled A Study of the Fragile Base Class Problem may demonstrate some good ideas on why all these levels of encapsulation and indirection are appropriate to avoid some classical problems related to inheritance.
"No direct access to the base class state" requirement: An extension
class should no access the state of its base class directly, but only
through calling base class methods.
Their paper demonstrates very compelling reasons on why something like getter and setter methods could be a good idea to avoid class extension fragility.