The answer(s) is pretty much dependent on context. As Hendie points out, the LASTPOINT variable is always set after entity creation - and after creating a line it would naturally hold the line's endpoint.
If there's any chanche that the user uses another command before you get to process the line, then LASTPOINT would probably hold a "wrong" point. E.g. a simple ID command will change it.
If that is the case but you're absolutely sure that the line you want is the last created, you can use ENTLAST and extract the endpoint:
(if (setq ent (entlast))(cdr (assoc 11 (entget ent))))
If the user gets to draw other entities in between then you will have to have the user pick the line in question and extract the endpoint:
(if (setq ent (car (entsel)))(cdr (assoc 11 (entget ent))))
added: didin't see Mark sneak in there