I think there is a confusion with the use or not of the indexes. I will try to give my opinion on the question that was about the convenience or not of using SELECT * FROM ..
It is never recommended to use SELECT * FROM for various reasons
1.- Although it is a convenient practice, it may cause an application to work incorrectly in the future. Imagine a table with the fields A, C F. If you do a SELECT * then the answer will bring 3 fields; but if you add field B after A (leaving fields A, B, C, F), the same SELECT will "travel" fields C and F one place. If your program uses the fields by position (displays field 2) then everything will fail.
2.- The reading may be slower. Imagine a table with 30 fields (it's not uncommon) and you only really need 3 fields. What do you think is taking longer and occupying more space? ... Exactly, the SELECT * will have to read 30 fields of the disk and transfer them to the program instead to read only 3 and transfer 3.
3.- In the case of indexes it can be even beneficial if all the fields you want to extract are in the index key: If you do a SELECT of 2 fields, and those two fields are in an index, then only reading the index can be answered all the SELECT; on the other hand, if you do a SELECT * then the database engine will have to - perhaps - use the index and then make the "jump" to the disk to extract the rest of the data (in SQL Server they are called lookups when you see the execution plan).
4.- SQL Server, specifically, can make use of CLUSTER indexes that even help you much more, but it would be the subject of another question. Maybe MYSQL has something similar.
I hope I have contributed.