The whole point of a constant is that it can't be modified. The other point is that it's a literal replacement made at compile time.
Let's look at one of list of constants built in to the DotNet SDK, the keyboard scan codes. There are 773 keyboard scan codes in the System.Windows.Forms.Keys enumeration - just for a list of keys on the computer.
Now consider all of the other thousands of enumerations and constants in the system... the "Magic Number Database" has over 380,000. That's not all of them, either. So if you were to include all of the constants your program might need as variables every time you compile it, you would be adding in over 1.5 megabytes just for the variable storage, not to mention the other things that go into storing and retrieving a variable.
So there are two very important reasons to use CONST in your program:
1. It's an obvious semantic flag that says "this value isn't going to change."
2. Those values get converted directly to data during compile time. There's no variable storage or lookup for those values, and unused constants actually disappear from the object code, saving even more space.
Does it matter in a little dinky 30K demo? No. But does it matter in large applications, spanning thousands of source files and multiple megabytes of object code?
Absolutely.