Unrecognizability of functional variant of halting problem
A Turing machine $T$ decides the halting problem if on input $\langle M,w \rangle$:

If $M$ halts on $w$, then $T$ halts and outputs &quot;Yes&quot;.
If $M$ does not halt on $w$, then $T$ halts and outputs &quot;No&quot;.

In order to show that $L$ is not recognizable, you assume that $L$ is recognizable, and use that to construct a Turing machine $T$ which decides the halting problem. This is not quite what you are doing:

You are assuming that $L_0,L_1$ are recognizable, but you don't explain how this follows from $L$ being recognizable.
You don't explain why $M_{\cup}$ always halts. This is only the case if you run $M_0$ and $M_1$ in parallel, and halt whenever one of them halts.
You state that $M_{\cup}$ always accepts and halts whether $M$ halts on $w$ or not. However, such a machine is easy to construct: all you need to do is to immediately halt, without even reading the input. What we need is that $M_{\cup}$ halts with a different answer depending on whether $M$ halts on $w$ or not.


Moving forward, for $\overline{L}$, you express $\overline{L}$ as the intersection of a non-recognizable language and a recognizable language, and conclude that $\overline{L}$ is not recognizable. Unfortunately, this step is invalid. For example, the empty language is the intersection of a non-recognizable language of your choice and the empty language, which is recognizable; yet the empty language is recognizable.
Instead, you need an argument very similar to the one you use for $L$ itself.