So first, just to make sure that I understand the proof, here is the proof as I understand it:
Take a program $H(x,y)$, which determines whether $x(y)$ will halt or not halt: if $x(y)$ halts then $H$ returns true, and otherwise it returns false. If $H$ exists, we can construct a new program $H'$ which has one input $x$, defined by $H'(x) = H(x,x)$. Using $H'$ we create a final function $H^+$, which loops forever if $H'$ returns true, and halts otherwise.
With this information, we can feed $H^+$ into itself — $H^+(H^+)$. If the inside halts, then the outside must loop, but due to the definition of $H'$, $H^+(H^+)$ is the same as $H^+(H^+,H^+)$. The outside is the same as the inside, and so must halt. This is a contradiction, so $H(x,y)$ cannot exist.
The thing I find confusing about this, is that it assumes that the interior $H^+$ is the same as the exterior $H^+$, whereas to me it seems that they would be different by virtue of one being the input to the other.
Another question is what is the input for the interior $H^+$? by un-nesting the $H^+$’s, and unrolling the definition of $H'$, we get $H^+(H^+,H^+)$, then $H^+(H^+(H^+))$, then $H^+(H^+(H^+(H^+)))$, and so on, so what is the first input? If there is no input then the question of whether $H^+(H^+)$ halts, that is, whether $H^+$ halts with input $H^+$, makes no sense for the same reason that the question what is the number answer to $x^2$ doesn't make sense – the function requires an input and if the input is just a function, you are asking if a function halts without knowing the input. An example of this is $H^+(x)$, where $x$ is
If input = 1
Halt
Else
Loop
Will this program halt? The answer is obviously that it depends on the input, so why is it not the same with the function $H^+(H^+)$?