Looking at John's code without comments, it looks like this
(defun getpoin7 (/ x)
(while (not (setq x (getpoint "\nSelect Point: ")))
(princ "\nYou did not select a point, please try again. ")
)
x
)
As you can see the WHILE loop is waiting for a nil value so it can quit.
It gets that value when the user picks a point.
The GETPOINT returns a point value to the SETQ which in turn returns that value
to the NULL. Because the value is not null the NULL returns nil.
This is the null the WHILE was waiting for to exit the loop.
But the WHILE returns the most recent value of the last expression, which is nil.
You want the getpoin7 function to return the point list not the nil value from the WHILE loop.
So you put the x and it does nothing more that return its value, which is the point list
we were looking for.
I hope that was clear enough to follow.
Each lisp function returns something and sometimes it is meaningless like PROMPT or COMMAND always
return nil and has no meaning. But most return a value that can be useful to you as a programmer.
Pay attention to these return values & think creatively.
Not very eloquent but I think you will see what I was trying to say.