1- why in the header file, the function prototype has "Dates *myEaster" as argument, but then the book says that I have to pass a pointer to an easter structure?
The function takes a pointer to an instance of a class that contains a myEaster struct member. The name of the instance in the argument list in the header file is irrelevant. The name chosen is usually one that makes the meaning of the argument clear to the caller, not to the code.
Then, he says: "The GetEaster() function is passed a pointer to an easter structure."
That is wrong. It takes a pointer to an nstance of a class that contains a myEaster struct member.
2- the name in the argument of the function prototype (*myEaster) is the same of the variable (struct easter type) defined few lines before: is this mandatory
No. See my first comment.
or I could write the function prototype like this (for example)?
Yes, but. The myEaster name sort of makes sense. The myPtr name makes no sense. The * says that the variable is a pointer. The variable is obviously yours. The Ptr in the name does not tell anyone what it is a pointer to.
3- this argument, points to what? To a Dates class or to the struct easter variable?
See my first comment.
4- in the function code, the line ... works only if *myData is a pointer to the Dates Class or to the struct easter variable?
It works only if the variable is a pointer to an instance of a class that has a struct easter member.
5- in the ".ino" code, the function GetEaster() is called as ... And I'm passing the address of the Dates class
No, you are not. You are passing the address of an object that is an instance of a class that... Big difference. The & part makes a pointer out of the address of the object, making it an instance.