That's mostly a matter of personal preference, and will be up to you - but there are two elements which are (or should be) restricted:
email: allow 256 characters. The local part of an email address (to the left of the '@') may be up to 64 characters long and the domain name may have a maximum of 253 characters – so in theory you need 318 characters, but the maximum of 256-character length of a forward or reverse path restricts the entire email address to be no more than 254 characters.
Password: You shouldn't store these. Instead, you should store a fixed sized hash value.
Password Storage: How to do it.[
^] explains the idea, but in C# rather than PHP - it's exactly the same pricincle though.
The other elements are just "whatever you feel like" - 20 characters, 50? As long as you check your user inputs before trying to submit to the DB, it's pretty much irrelevant once you get over 20 characters - but 50 is a better idea given the cost of storage these days.