You can use a [u]MOSFET driver[/u] with analogWrite() (which is [u]PWM[/u] to control the speed of a motor.
You don’t need an H-driver if you don’t need to reverse the motor. And, you’ll get a little more voltage-loss with an H-bridge. (There will be some voltage loss across the MOSFET too, depending on it’s on-resistance, but it shouldn’t be significant.)
You can read a potentiometer or the DC voltage from a speed controller. If you’re reading the nominal voltage from a speed controller you’ll need a voltage divider (2 resistors) to knock the voltage down to 5V or less.
Then, you can use the [u]map()[/u] the 10-bit (0-1023) Analog input to the 8-bit (0-256) PWM output.
Then you can add a little time-delay to ramp-up PWM. That’s not “hard” but you’ll have to use millis() instead of delay() which might be slightly tricky for a beginner.
Or for drag racing you can just use a pushbutton switch.
If you think about it and work on it a little at a time, you should be able to figure-out how to ramp-up slowly (slightly slowly) but ramp-down immediately (not important for drag racing but you want to break more-quickly on a road circuit).