Depends whether your users
table is MyISAM or InnoDB.
If it's MyISAM, one statement or the other takes a lock on the table, and there's little you can do to control that, short of locking tables yourself.
If it's InnoDB, it's transaction-based. The multi-versioning architecture allows concurrent access to the table, and the SELECT
will see the count of rows as of the instant its transaction started. If there's an INSERT
going on simultaneously, the SELECT
will see 0 rows. In fact you could even see 0 rows by a SELECT
executed some seconds later, if the transaction for the INSERT
has not committed yet.
There's no way for the two transactions to start truly simultaneously. Transactions are guaranteed to have some order.