DROP TABLE behaviour in Postgres transactions
Yes, all 3 of your assumptions are correct.
The end result would be the same in case of both transactions but the blocking caused by the first transaction would be longer and depend on the amount of data and the time it takes to create the index. The 2nd transaction would require a very brief lock to rename the objects.
Some info for people who think that renaming a table will be sufficient for their use case. Beware! Renaming in PostgreSQL may not work as you expected sometimes.
More info here What could go wrong, when swapping table contents using table rename in Postgresql?