Delay and limit will both free up CPU usage.
The main difference is delay is hard coded; limit is a variable amount.
For example, I have a program that does some extensive math calculations in a loop that takes .05 seconds to process.
DO
MathJunk
_DELAY .1
LOOP
Now, with the above, I process about 6 loops per second. The math takes .05 seconds, the delay takes .1, so .15 seconds per loop... or a little over 6 times per second.
Now, we use _LIMIT:
DO
MathJunk
_LIMIT 10
LOOP
Here, QB64 runs a timer and calculates the delay for your PC automatically. If the math takes .05 seconds, the delay becomes .05 seconds. If the math takes .1 second, the delay becomes 0.0 seconds.
Limit sets the maximum number of times you repeat a loop in a second; Delay is a hard-coded pause in execution.