Logfile parser for Team Fortress Classic video game
Your 3rd question is off-topic for the site, but I do believe that you are using the one-to-many relationships correctly.

When you are finding a player by steam_id you don't actually need to select the steam_id unless you are going to use it for something in an application.  This will speed up the query (probably not enough to be visible though).  

Another thing, and this is just a thought because I am not positive on how this works:

In your players table you could change the primary key to be the Steam ID since that is always going to be unique and you are always going to give that as a value on the insertion of a record.

On the same note, you can change the foreign key of the aliases table to be the Steam ID as well.  

Still add the Constraint of NOT NULL, Primary Key And Foreign Key as appropriate.