Usually a remote just has an on/off button. You hit the button and the device goes to the state it is not currently in (on to off for instance). Discrete codes only do that one command. If you have a discrete on, it will only turn the device on. If the device is already on it will not turn off. The device will get the on code and stay on. These are great for building macros since you do not have to worry which state the device is in since the discrete code will only do exactly what you want, turn or keep on a device, or turn off or let a device stay off. The problem is most manufactures do not release the discrete codes and it can be a pain to find and implement them sometimes.