Indexing options for Postgres for a table with billion records when you want to index only recent records
Creating and dropping indexes does not harm the table in the least. Also, with a partial index, you will pay the price for index maintenance only if the row matches the condition.
You should consider range partitioning by updated_at. Then queries with that column in the WHERE condition will only scan the necessary partitions. As a side effect, deleting old data becomes easier.
The price you would be paying is twofold:

Most other queries would become at least slightly slower. Make sure that you don't have too many partitions.

Updating a row so that updated_at crosses a partition boundary will incur the overhead of moving the row to another partition.