Read a book on database design and structuring.
The proper fields and assignment of lengths can have a huge impact on the performance of a database. Just think for each field you assign an extra character - that's a wasted bit used if you don't populate it.
Example:
using a varchar(50) for a zipcode - obviously varchar(10) would cover it. So instead of wasting 40 bits per record in that one table, you've optimized it. In a 10 million row table - that's about 381 mb you save from that one field, imagine if you've got 10 fields not optimized.
There is really a lot behind designing a well functioning scalable database. Like I said - read a book on the subject.
First of all, it's bytes not bits.
Second, a varchar(N) field only requires 1 byte above what is actually stored (2 bytes if N > 255), 'N' is the maximum allowed characters and any data above that number is truncated.
In your example, if all that was stored was a zip + 4, such as 12345-1234 (10 chars), both varchar(10) and varchar(50) would require the same storage space, 11 bytes.
Looks like you need to read a book on the subject.