What is the advantages of using auto_increment in database as primary key over set of attributes?
circle_share1 does not require much in-depth design thought.  circle_share2 requires some actual brain cycles to determine if the primary key will have the desired performance.   

Rows in circle_share1 will be written to the disk in the exact order they are inserted, thereby making inserts quicker.

Rows in circle_share2 may be inserted anywhere in the table, necessitating page-splits thereby fragmenting the data and possibly resulting in slower performance.  

Neither way is the correct way in all circumstances - the best way depends on your data, and how it will be created in the user and circle tables and inserted into the circle_shareX table.