Field variables are specific to the instance of the class. You want this because you might have many points to keep track of, each with their own x, y, and z coordinates.
(2) constructors must call
typically after all the let statements where you assign values to the fields.
(3) you can't have 2 constructors called "new", even if one takes args and the other does not. Just give the one with args a different name. [At least this is the way Jack is defined. If you want to support this, you'll have to give your compiler the ability to handle it.]
Having a constructor return the value from another constructor is commonly done in other languages, but the built-in Jack compiler does not support it - it really does want "return this;" inside of every constructor. Of course, the compiler you build doesn't have to check for this, but it might irritate you that the built-in compiler will consistently fail.