Suppose you want to store say a product code in a table. At present all the product codes you've got are 5 characters or less - but this may change in the future. You can't see it ever being more than 10, but who knows?
You can create it as varchar(10), but if you're wrong, then at some future point in time you may have to change it. If you create it as varchar(20), the problem doesnt exist;
So are you wasting space declaring it as varchar(20) instead of varchar(10)? No, because SQL server will only use as many characters as the column contains (which at this time is 5): all the datatype varchar(n) really means is "variable length text up to a maximum of n characters long".
So provided the defined length is at least as much as you foreseeably need, I don't think it matters overmuch exactly what the defined size is.