Will my database index be more performant with a smaller varchar size?
If some of the values are 21 characters, dropping to 17 will lose data.  You probably don't want to do that.

Be conservative -- what will future data be like?  Maybe 22 characters?  Drop the length to, say, 30.

No space will be saved by changing the max length -- in the "data" or in the "index".  Well, not because of the change.  However, most ALTERs include some degree of rebuilding the table.  This is likely to squeeze out some, not all, of the freed or wasted space.  To see what I mean, 

SHOW TABLE STATUS LIKE 't';   -- current size
OPTIMIZE TABLE t;
SHOW TABLE STATUS LIKE 't';   -- defragmented size
ALTER TABLE t MODIFY COLUMN c VARCHAR(30)...;`
SHOW TABLE STATUS LIKE 't';   -- probably no change to Data_length or Index_length


Performance?  In a complex SELECT, where a temporary table needs to be built, VARCHARs turn into CHARs temporarily.  For utf8mb4, that is 4*255 bytes versus 4*30.  This leads to bulkiness.  If the temp table is too big for RAM, it will spill to disk.  Disk is slower, even SSDs.