PWM vs ESC for speed control for Arduino quadcopter
First, let's define some terms.

Quadcopter: an aerial vehicle that uses 4 horizontal propellers for lift. For stability a 3 axis gyro senses yaw, pitch, and roll, and varies the power to each motor independently.  

Brushed DC Motor: a DC motor which has brushes and a commutator. To run it you simply apply voltage to the two terminals, and the commutator automatically switches power to the armature coils in synchronization with its rotation.    

Brushless DC Motor (BLDC): a DC motor with no brushes or commutator. An external circuit is required to switch power to each of the 3 coils in turn, synchronized to the rotor's angular position.   

Pulse Width Modulation (PWM): a technique that involves creating a 'square' pulse with varying width or on/off ratio. Can be used to vary motor voltage by switching it on and off rapidly, or to send a value by encoding it as a variable width pulse, eg. standard radio control servo signal is a 1~2ms pulse repeated every 20ms (50Hz).

Electronic Speed Controller (ESC): A device which controls a motor by varying the power (voltage) applied to it. Usually uses 0-100% PWM to vary the power, and may itself be controlled by a 1~2ms servo PWM signal. A brushless ESC will have some way of detecting the brushless motor's rotor position so that it can switch the coils at the correct times. This can done with hall sensors on the motor, or by measuring the back-emf from the coils themselves. 'Sensorless' ESC's and motors are usually used with propellers because the motor doesn't have to be controlled at very low speed (when back-emf would be too weak) and only has 3 wires between the ESC and motor. 

You can use either brushed or brushless motors in a quadcopter. Brushless motors have the advantages of higher power/weight and better efficiency, but are more expensive and difficult to make in very small sizes. A brushless ESC is complex and requires a dedicated MCU, so these are usually provided as a separate unit that you control with a servo signal.

Brushed motors are not as efficient or powerful, but can be controlled with a simple PWM switching circuit. If your controller has high-speed 0-100% PWM outputs then you just need a power MOSFET and diode to make the 'ESC' for each motor.

For good stability a quadcopter needs a fast feedback loop between attitude (gyro signals) and propeller thrust (motor speed). Applying PWM directly to the motor provides faster response than sending servo pulses to a separate ESC. However a brushless motor practically requires a separate ESC, so some brushless ESC's have special 'multirotor' firmware that accepts a higher servo pulse frequency (up to 300Hz) and is optimized for fast acceleration.

If you are building a small quadcopter then it may be cheaper and easier to use brushed motors and make your own ESCs, but if you expect it to weigh over ~500g then you should use brushless motors and ESC's. And get plenty of spare props because you are bound to chew a few up!