I have tried to answer the questions.
1] What does the default implementation of equals() method do?
It checks the Object equality.
for any non-null reference values x and y, this method returns true if and only if x and y refer to the same object (x == y has the value true).
2] What does it do when overridden?
It behaves as per the code you write in the overridden method.
e.g. if you have student class, you can just check the roll number of two student objects to declare that they are equal.
There are defined rules for equality check that it should be reflexive,symmetric,transitive & consistent
3] What does the default implementation of hashcode() method do?
Returns a hash code value (an integer) for the object.
This method is supported for the benefit of hashtables to identify the proper storage bucket.
4] What does it do when overridden?
Again depends on the code you write in the overridden method.
You have to define the implementation for your user defined class that follows the general contract for hashcode.
5] How do we define what is the appropriate, correct, legal implementation of these methods?
There are guidelines in the API