Why do people say
я никто instead of
я не никто. It really confuses because I learned that everything needs double negation.
Because there's no verb. Whenever you have got a verb, you make it negative.
Я ничего не сделал. Он никому ничего не сказал.
But with the verb "to be"it's different. You say
You are nobody and your name is "nothing". Ты никто, и твое имя — «ничто».
If you put a negation (ты не "никто"), the meaning changes and becomes positive (you aren't "nobody", you are "somebody".
I'd clarify a bit V.V.'s answer.
1) There IS a verb, it is omitted and implied, indeed, but structurally speaking it is there, even if invisible.
The proper way to write down your examples would be "я - никто" & "я - не никто". Note long dash (тире) added - it denotes a spelling pause, that takes place of the omitted is/are verb (3rd person present tense "to be", есть/суть).
2) The double negation propagates from a negated verb to the noun it controls, but not backwards! The omitted implied verb here is non-negated. Just replace the dash with the verb itself. It would sound archaic and weird, but is possible.
- я - никто => я / есть / никто
- я - не никто => я / есть / не никто
Negation falls to the noun, not to the verb. The verb itself stays positive. So no negated verb to trigger the double negation.