Yes, those diodes are imperative. ESPECIALLY if you use BJTs (since MOSFETs have a parasitic diode in them that goes the same way, except that it is too slow to be of good use for this applicaiton but it can work in a pinch and at least gives something "to give"). A BJT doesnt have this parasitic diode and will therefore be the thing that gives first thus dying.
I don't feel like explaining it too much since I've had to do it a thousand times. BUt basically when you cut current flowing through an inductor (ie. the motor) the inductor tries to keep the current flowing (so called flyback current). If the current doesn't flow, then the voltage across the inductor will rise UNTIL the current does flow (the so called flyback voltage spike). With the diodes, they will turn on and the current will flow. Without them the votlage will keep rising until something gives to allow the current to flow (ie. the transistors will fry and become short-circuited). You want very fast, low forward voltage drop diodes for this application because lower voltage drop means the diode turns on sooner (so the flyback voltage has to rise less before the current can flow to kill the flyback voltage spike). You want it to be fast since the flyback voltage continues to rise until the diode actually turns on, and the diode takes a finite amount of time to turn on.
THe rest is explained here:
https://www.modularcircuits.com/h-bridge_secrets1.htm
(THere are 3 pages, Secrets 1, 2, and 3). Secrets 2 explains the inductive flyback stuff.
Servo motor (in general) - a motor with absolute position feedback
Motor- a regular old motor
RC Servo- A servo motor but the kind used in RC vehicles and aircraft
So which is it?
Assuming you are actually driving a brushed DC motor...I believe you need current limiting resistors on the bases of the power BJTs.
But if it's an RC servo, you need only provide power (+V, GND) and a position control SIGNAL (not a power drive) since RC servos have H-bridges inside them already to provide the drive current to the motor. THis signal will simply be a low voltage, low current PWM signal where the on-time of the pulse represents the servo motor's desired absolute position. In which case you need none of this extra circuitry.
I suggest MOSFETs for low voltage H-bridges since they are more efficient at that level than BJTs (imagine the losses of X current flowing through the low source-drain resistance of a FET vs the constant diode-like base-emitter voltage drop of a BJT) and switch faster with easier gate drive requirements. Low voltage in the industrial sense (so <200V) which is pretty much anything built at home. The gate drive requirements would also be slightly different for your circuit.
And in both cases you have shoot-through problems where it takes a finite amount of time to turn on and off and with certain kinds of simplified control that depend on the FETs having identical switching characteristics (which they never do in real life and is even worse for different types of transistors like you using PNP and NPN) both left (or right) transistors will be on for a short-time making a short-circuit.
Your control scheme (how one signal controls left transistors and the other control right transistors) makes the problem worse. IT would work in a perfect world but this isn't a perfect world. It may be better to rearrange your two control signals to be "forward" and "reverse". By this, I mean one control signal controls top-left and bottom-right transistors (one direction) and the other control signal controls top-right and bottom-left transistors (the other direction). THis will reduce how often shoot-through occurs due to the way of the MOSFET switching (ie. high-low side transistor pairs switch less so less shoot-through). Of course, you can also have independent control of every transistor.