The bottom level tends to be basic Arduino shields that just switch power, but don't have a current limiting controller. Those need digital signal lines to tell them when to step. They waste a lot of power and can't be used with larger motors.
The next step up is a current limiting stepper motor driver.[1] These can handle more voltage and current, and have the sensing to avoid burning themselves out. You still have to provide pulses for each step. Go for at least this level. Stepper motors use considerable power when stopped, and you need current limiting on all but the tiniest motors. Otherwise you get to choose between overheating and too weak.
Next are drivers and controllers on the same board. These accept commands over USB, I2C, or a few other data paths, and take care of operating the motor.[2] If you're not into really low level programming, this makes life simpler.
[1] https://www.pololu.com/product/2968
[2] https://www.pololu.com/category/212/tic-stepper-motor-contro...