Using column size much larger than necessary
SQL Server uses column lengths when allocating memory for query processing.  So, yes, in short, you should always size columns appropriately for the data.  

Memory allocations are based on the number of rows returned by the query multiplied by half the declared length of the column. 

Having said that, in this case where you've got 6 rows you probably don't want to over optimize prematurely.  Unless you JOIN this table to another with millions of rows, there won't be a massive difference between a varchar(24) and a varchar(32), or even a varchar(128).

Your second question asks about aligning column lengths on binary multiples.   That's not required at all since SQL Server stores all data in 8KB pages, regardless of the length of each column.