Please note that the autotruncation that MySQL does is against the SQL spec, which says you shoudn't truncate chars, but keep the padding upon retrieval. From an application perspective, this makes char and varchar appear pretty much the same.
From a storage perspective, char is slightly more efficient if you're storing things like md5s that are ALWAYS a certain legnth, since there is no need to store the length in each row, only once in the table definition.
Generally speaking, char(x) is quite useful when storing things that are always x length, but if it's variable, there's often no savings in space, and sometimes you use more than a varchar(x) would.