It is how the table is referenced by other users. You doing grant select on table_name as the owner of that table to public means others would have to do select * from owner.table_name. If you create the public synonym, then others only need to do select * from table_name as opposed to select * from owner.table_name.