Regarding your answer, here are some corrections. For part (1), your argument is partially correct but incorrectly stated. For part (2), your argument is not correct.
Your biggest mistake is in the way you describe nondeterministic Turing machines. Remember that a nondeterministic Turing machine does not magically have access to all possible paths at once -- instead, it nondeterministically picks a path, but at the end it can only follow the particular path it has chosen! So, for example, the language you used in 1.2 "the machine checks if any non-quit path exists"
does not make sense.
Similarly, you cannot say this in 1.1: "The machine guesses all the possible paths for the given input." A nondeterministic machine cannot guess all possible paths. It can guess one particular path and then inspect that path.
Instead, you can say this: "the machine guesses one particular path. If that path accepts, accept, otherwise reject."
This correction will also expose an error you made in step (2).
Finally, I suggest that in making this argument, you start by giving the "nice" machine a name, call it N. This will make the logic of the argument much clearer.
You do not need to check 1.3 because you know N is nice; you don't need to verify whether it's nice or not.
Instead, you need to prove that your construction accepts a string iff it is in the language L.
Here is a corrected form of your argument (1), incorporating the above. The corrections are in bold:
Let us construct an NP machine M for L that gets the input x. Since we know L is accepted by a nice machine, let N be the nice machine for L.
1.1 The machine M guesses one particular path of N for the given input.
1.2 The machine M checks the result of N on this path: if it is accept, accept. If it is reject or quit, reject.
1.3 Let us argue why this construction is correct: first suppose $x \in L$. Then $N$ accepts $x$ on all non-quit paths, therefore $x$ is accepted by at least one path in M, so M accepts. Second, suppose $x \notin L$. Then all paths in M either quit or reject, therefore, all paths in M reject.
For part (2), I recommend you start out by naming your variables N, M as in part (1). Then your goal is to define machine M given machine N.