Including the substring "_id" in column names
This is a matter of style, and likely to get religious.  Personally, I do find it valuable to explicitly label ID fields TeamID and PlayerID; as you say, it makes it perfectly clear that the field stores an ID and not some other type of data, such as a label.  Being explicit is usually more valuable than being brief, in the long term.

I prefer using PlayerID, TeamID, etc. over just ID, but offhand I can't give you a compelling reason.  It means that your joins are consistently X to X (P.TeamID = T.TeamID), whereas P.ID and T.ID are very different fields which should not be joined.  It's easier to confuse P.ID and T.ID when glancing through a query than P.PlayerID and T.TeamID.  On the other hand, there's value in consistently using the same field name for your PK, too.