It may have been normal in the earliest days of computer programming. Legacy programming languages are the reason we had to frantically prepare for the year 2000. By no measure is it normal In the year 2025.
1. It's not just legacy systems. The systems I designed had unused flags. The systems others designed had unused flags. My friend has been working with databases his whole life; he sees unused flags.
2. I thought I explained this already, but I'll take another stab. I'll use an analogy to help you out.
A. Suppose you're buying some land and you're planning to turn it into a farm. It costs money to acquire the land, erect fencing, get permits, etc. So, at the outset, you want to estimate the amount of land you think you will be farming and buy at least that much. But you will also want to buy a bit extra to allow yourself some expansion opportunities, because it's cheaper to buy a bit of extra land than to replace your fencing if you need more room.
In databases, the same principle is followed. You want to allocate the disk and memory space at the outset, and you give yourself a buffer in case you need more. Often these buffers take the form of unused data columns that might be used later -- or, as you've undoubtedly seen the phrase, "reserved for future use."
B. Now, suppose on your farm, there's a pocket of land that isn't useful. Let's say you planted trees for tree fruit, but the market for tree fruit has collapsed in your area. Maybe the climate has changed and the fruit is now low quality. Anyway, you've got this hole in your farm. Do you: a) leave everything where it is? or b) uproot all of your other crops and "slide them down" to make sure that there isn't a gap in there?
In databases, it's the same. If you find that a column isn't helpful for whatever reason, you don't eliminate it. Eliminating a column from a database is extremely inefficient. In most RDMS, there's not even a command to do it. You have to create a new table without the column, copy all the records from the original table into it, then delete the original table, and then move the new table back to where the original table was. Nobody does this, because it makes no sense. It's a huge amount of work that risks errors, when there's nothing wrong with having a database column go unused.
Does this make sense to you? Or do you need me to explain it like I did my ten year old when I started teaching him databases last year?