I personally wouldn’t use dynamic column names or even column names derived from a formula. I think if the column headers momentarily disappear, or too many change at once, and glide is syncing at that moment, it can break things. I think database structure should remain stable for things to work properly.
Glide reads the first row. Any column that contains something on that first row will become your header in glide. I think glide will detect if a column name changes, but within reason. It probably uses a combination of an underlying column ID, the column name, and maybe surrounding columns? Just a guess.
I think it would be better to have separate columns to store dates, and then put the dates in rows.