Nothing in the *database* will lock data with a SELECT unless you are doing SELECT-FOR-UPDATE.
What third-party tools may do if of course their business.
You will see negligible difference in performance (we're talking nanoseconds) between select * and select a.*
However it is generally considered good practice to alias *everything* in a query (the select columns, the where clause columns etc) because it makes your code more robust.
For example, assuming 'owner' comes from my_table1 and 'name, address' comes from my_table2, then the following works just fine:
select owner, name, address
from my_table1, my_table2
where [join conditions]
But the moment someone adds a column called "name" to my_table1, the query breaks, because we can't resolve which table we should be using.
Conversely
select a.owner, b.name, b.address
from my_table1 a, my_table2 b
where [join conditions]
will not break.