You should always select the exact fields, or else you could face enormous performance hits when you modify your table. Think about what would happen if you decide to add a blob to that table. You might accidentally select megabytes of unneeded data.
There is a slight nuance. It might be better for the query cache to have only a limited number of queries, so when you sometimes need only field1, 2 and 3, and some other times you may need 4 as well and 4 is only a small field, it might be better to always select 1, 2, 3 and 4, even if you need only the first 3. You still should never use *
though.