Is using SELECT Max(ID) FROM table safer than using SELECT last_insert_id()
Definitely not, never! LAST_INSERT_ID() exists exactly for the reason you state: Other clients could have made other inserts. LAST_INSERT_ID() always gives you the last inserted ID on the current connection.