SELECT * will return all the columns of each row into memory, but it won't put any additional strain on the MySQL server.
When you add DISTINCT(*) you are asking MySQL to create a temporary table (either in memory or on disk) where it puts all the results without the distinct, then filters them to only return the distinct items. It may also disrupt the optimiser which means that indexes that can be used to move the pointer very quickly through the table are not used, so instead MySQL has to look at each row, only to discard it as there is no match.