A stepper motor needs a specialised stepper motor driver. Stepper motors work in a very different way to DC motors. Stepper motors move one step for every pulse. The pulses are usually very short and the speed is controlled by varying the interval between pulses.
These links may help
Stepper Motor Basics
Simple Stepper Code
DC motors need a h-bridge motor driver (assuming you need to be able to control the direction). The h-bridge by itself just acts as a switch that is controlled by the Arduino. If you want to control the motor speed you do that using PWM (analogWrite() ) which generates a series of pulses with the width varying to control how much energy is passed to the motor. When the pulses are narrow the motor is only getting power for a small part of the PWM cycle. and the average energy passed to the motor is low. The pulse frequency is completely unrelated to the speed of the motor.
A servo (meaning a hobby servo) has its electronic control inside the box so the Arduino just needs to send it a signal that indicates the position the servo arm should move to. Unfortunately the term PWM is also used for the signal that controls a servo although the way it is used is very different from the PWM that controls a DC motor. In the case of a servo the width of the pulse (between about 400 and 2400 microsecs) define the angle of the servo arm - roughly between 0 and 180 degrees, but that varies a bit with different servos.
Thank you, Robin. I appreciate you taking the time to spell that out. The coding link will be especially useful, as I plan to purchase a set of A4988 Stepper drivers on a CNC shield (eventually).
Part of my confusion comes from the wide variety of components available on the market. Take, for example, the "Qunqi L298N Motor Drive Controller Board Module Dual H Bridge DC Stepper For Arduino" (from Amazon). This little board says that it can drive either a Stepper Motor or a DC Motor. This was the reason for my question, as it led me to believe that they may be the same thing. I'm guessing that this specific board just has more capability.
Your paragraph of PWM also begs more questions. I'm familiar with PWM and duty-cycle, but I thought it was a digital signal....not analog. I use the Fast_LED library for a string of addressable lights, and I believe that is a digital PWM signal? That may be a topic for a different section, however.
EDIT I just finished reading through your tutorial that you posted above, and it was very helpful. If you have tutorials on any related topic, I would like to read it. Please let me know if there is a link to your tutorials.