"a variable character so y r we specifying the maximum length"
The word 'variable' means that the size it takes up on disk changes depending on how many characters you put in the column. If you only put 5 chars, it stores 5 bytes.
if you ut 10 chars, it stores ten.
So if you store 5 million records of one char, it saves you 5 million times 9 chars compared to the CHAR type.
The limit you set is for consistency. The varchar column should not contain more characters than what you specify.
If you don't set a limit, then bugs in your script could cause strings of 150 chars to be stored in the database. And when you retreive those values and work with them in other scripts, those scripts will choke/explode because they suddenly get 15 times as many chars as you expected.
The limit seems to make little sense in MySQL due to MySQL's very very limited functionality.
MySQL does not issue warnings about entering strings that are too long. It silently truncates the string to fit the column, and you don't find out about your problem untill it's too late.
In a real database you'd declare a check or a constraint, and then the database will not ever accept a string longer than what you specified, it would rollback your transaction and generate an error, keeping your data clean and consistent.
A forum, a FAQ, what else do you need?