CAB and Ron used GETCORNER with a point from which to drag, namely the previously input point. Just to complete the fine answers, GETPOINT can also be given a point from which to drag:
(setq pt1 (getpoint "\nSelect first corner: "))
(setq pt2 (getpoint pt1 "\nSelect second corner: "))
Whether you use one function or the other, you just use previously acquired data to continue from. As you seem to have found out, neither of the functions sets LASTPOINT anyway .. so reading it or setting it is useless for this purpose.