If you use the group_id, a new index is required to avoid a tablescan. This will be clearly the fastest method, cause the most operations on this table are read operations.
But for the registered column an index already exists. Therefore you can use something like this (a mix of your ideas):

$query = 'DELETE FROM '.$db_prefix.'users WHERE registered BETWEEN '.(time()-(60*60*24)).' AND '.(time()-(60*60)).' AND group_id = 32000 AND id > 2 AND num_posts = 0';

This will result in a range condition using the index of 'registered' with an additional scan for the other columns. I think it will be not noticeable slower than the group_id index matching and you have not to create an new index.

Both methods are good, the one requires a little bit more space in the database (and backup) and one more index must be organized on write access, in the other you have to use a range condition instead of matching.