\n(let ((First (gensym "FIRST-"))\n (Second (gensym "SECOND-"))\n (Sum (gensym "SUM-")))\n .\n .\n .\n)\n
what is happening is that the expression is evaluated from the outside in. So Lisp notices that let is a special form, and the following expression is parsed according to the rules for that form.
Very, very few parts of the language are going to change rules like that. The other place where you get tripped up is that that macros or special forms can decide whether or not a particular term should be evaluated (or possibly should be evaluated multiple times). But just think about how you would write an if test, or a loop without that facility, and you see why it is needed.
So yes. let is going to be special in that way. And it is an inconsistency. But I can't think of a single language that doesn't have inconsistencies which are as big or bigger.
Cheers,
Ben