I discovered this term FEE_PER_KB_OLD in the code base, but it seems unused.
It is unused.
What is the historical context around it? Was it ever used?
It was used (or rather its value was used), until PR #1074 (Sep 15, 2016), where the definition was added (relevant part of #1074):
-#define FEE_PER_KB ((uint64_t)10000000000) // pow(10, 10)
+#define FEE_PER_KB_OLD ((uint64_t)10000000000) // pow(10, 10)
+#define FEE_PER_KB ((uint64_t)2000000000) // 2 * pow(10, 9)
Was FEE_PER_KB used from the beginning?
Not quite. It was added in PR #184 (Nov 7, 2014).
Also, it sounds like the minimum fee is not enforced at the protocol level, just by node consensus (won't relay transactions with fees below the minimum).
The minimum fee is enforced by the consensus protocol, whereby nodes will not relay transactions that do not have the minimum fee. If a miner however edited the code to allow zero-fee transactions and happens to mine one in a block, the block can still be accepted.
Was there a time where fees were ignored?
Fees were never ignored, although there was no minimum tx fee enforcement initially; this was added a few months later in commit d9f3421ce7 (Jul 17, 2014).