The Arduino makes it's own 5V. The Vin can be 6 ... 12V.
You can use the USB connector for the 5V.
Or you can supply an external +5V to the 5V pin of the Arduino.
Or you can supply an external 6...12V to Vin.
So I would prefer to connect the +12V to Vin.
Everything else is okay.
The PWM is able to switch fast, and by using different pulse widths the speed of the motor can be controlled.http://en.wikipedia.org/wiki/Pulse-width_modulation
The Arduino function for PWM output is called analogWrite().http://arduino.cc/en/Reference/analogWrite
analogWrite(11, 0); // motor off
analogWrite(11,128); // motor 50%
analogWrite(11,255); // motor on