I have used the second and the third. Then I connected the Enable pins directly to Vcc, one direction pin to a digital pin of the microcontroller and the other direction pin to a PWM pin of the microcontroller. This connection is the most used in robotics, and it is called sign magnitude. The motor will be stopped at a PWM value of 0 and full speed at 255, if the direction pin is low. If the direction pin is high, the motor will be stopped at a PWM value of 255 and full speed in the oposite direction at a PWM value of 0.
The first schematic is overly done. The SN754410 has internal clamp diodes, so external diodes are not necessary. I guess it's an extra protection. If you tye the Enable pins directly to Vcc, you need only a PWM pin from the microcontroller to drive the motor , sice the schematic uses an inverter for the second direction pin. This connection is known as locked antiphase. The PWM signal has to be 50% ON (and of course 50% OFF) for the motor to be stopped, the value is 127. A greater value will make the motor rotate in one direction (255 being the max speed) and a lower value will make the motor rotate in the oposite direction (0 being the max speed). This method however halves the resolution of the PWM signal.
Which method is better? Depends. For a small robot, go with sign magnitude. Easier to code and interface. For a big robot or a balancing robot go with locked antiphase, since it can recharge batteries when changing directions or going downhill.