You can reduce K to L:
Let
K = {e | e's Turing machine halts on e}
Let f(x,y) be
f(x,y) = Code of the following machine:
For any input w:
Run y's Turing machine on y.
If w = x, accept. Otherwise reject.
Here by Recursion theorem, We know there is some computable function s which:
f(s(y),y) = s(y)
Also by proof of Recursion theorem, we know that s(y) can be computably constructed from f((which is computable)) and y. So we can compute s(y) from y.
Here by definition of f, we know that if M is the Turing machine encoded by s(y) Then:
L(M) = {s(y)} if and only if y belongs to K.
So we reduced K to L. Since K is not recursive, L is not recursive either.
For your second question about how to construct a Turing machine which only accepts its own code. I refer you to Recursion theorem and the following question:
Understanding Whether a Set is an Index Set
I hope this can help you.