1) From
https://docs.oracle.com/database/121/ADQUE/aq_intro.htm#CHDCEDDG "When a message is dequeued using REMOVE_NODATA mode, the payload of the message is not retrieved. This mode can be useful when the user has already examined the message payload, possibly by means of a previous BROWSE dequeue."
So in effect we are dequeuing without getting the message, because we either already have it or don't care about it.
2) Not really. It is similar to a delete on a table with a few indexes (because under the covers that's how we implement the message store)
Don't every do direct DML against the queue tables, because we reserve the right to change the implementation whenever we want. One day we might store *other* stuff in the MSG_ID columns besides the message etc.