I can only offer you limited input on this topic.
A " code reader " is what the name suggests, i.e. you can retrieve stored trouble codes, but still need a description for each code.
A " scanner " normally allows you to observe " live data stream ", i.e. you can see what's happening, while it is happening.
If that makes any sense.