I need to power the arduino uno AND the motorshiel ? or just one of them is enough?
When you connect the motor shield to the Arduino and set it's power to Vin (with the jumpers), it takes the power from the DC jack on your arduino, through a diode and then powers the motor shield. So you have to be careful with this. I haven't check what is the diode current rating or what the traces on the board allows but if the motor shield takes 2 AMPs it may be problematical. The manual of the motor shield says it is strongly recommended to use an external power source to power the board.
What you should do:
1. Read the manual carefully
2. You should probably use an external power source for the motor shield (directly connect your battery to the motor shield).
3. Check if your 9V battery can supply enough current to power everything. Even if it can supply let's say 2000 mAH it may not be able to supply 2000 mA at one time.
2. What is PWM?
Well, PWM is Pulse-Width-Modulation. If you program the Arduino to OUTPUT a square Wave with analogWrite, the Arduino will OUTPUT a square wave (a square wave is the voltage of a pin going from HIGH to LOW VERY fast(Google It))!
But this square wave needs to know for how much time it will be at 5v during one cycle. This is the PWM.
So let's say I want an LED to be at exactly 50% of it's brightness, I can lower the current passing through it, or can can make the LED go ON and OFF very quickly, so you can't see it. I'll make it be ON 50% of the time, and OFF the other 50%.
What will be the brightness of the LED? 50%.
If I want it at 25% brightness, I'll make it on for 25% of the time.
On the arduino you are using 8 bit so 255 = 100%, 128 = 50%, 64 = 25%, etc.
It's the same thing on a motor!
If I want it to be full speed, I will supply the motor with a constant voltage.
If I want it to be 50% of it's speed, I'll supply it with a voltage going from HIGH to LOW, HIGH 50% of the time.
Still not clear? Take a look at this: http://tronixstuff.wordpress.com/2010/04/10/getting-started-with-arduino-chapter-one/http://arduino.cc/en/Tutorial/PWMhttp://arduino.cc/en/Reference/AnalogWrite
And don't forget that Google is your friend!