Implicit and explicit transactions as such has nothing to do with queue tables really.
Explicit transaction: you say BEGIN TRANSACTION, and then COMMIT TRANSACTION to commit it.
Implicit transactions are something which normally are used in SQL Server: If you don't say BEGIN TRANSACTION, the engine starts a transaction for anything you perform be that SELECT, INSERT, CREATE USER whatever. Then you still need to commit that transaction with COMMIT TRANSACTION. Implicit transaction is mandated by ANSI and is the default (and probably the only option in many products). In SQL Server, you need to issue the command SET IMPLICIT_TRANSACTIONS ON to get this functionality. There is very little reason to do this - implicit transactions are very alien in the SQL Server world.
The default in SQL Server when there is no explicit BEGIN TRANSACTION is that each statement is its own transaction. That is known as autocommit (which is what you actually had in mind when you said "implicit transaction", but I like to get the terminology right.)
Of the examples above, you must have explicit BEGIN TRANSACTION around the two statements in the first example. Without BEGIN TRANSACTION, the UPDLOCK taken in the first SELECT would be released before the UPDATE is executed, which means that two concurrent process could get the same row.
The second attempts to do all in a single statement, so the lack of BEGIN TRANSACTION should not matter here. Whether it actually works, I don't want to vouch on, because these things are difficult to analyse, and you have to do some heavy load testing to prove that your scheme works.