Circuit looks good...you might want to add some reverse biased diodes in paralle with each MOSFET to handle the flyback current. MOSFETs have a diode built in that can do this, but the diode is not very fast. It works in a pinch, but isn't optimal.
For PMOS, the source is connected to the +voltage. This is because to turn the PMOS on, the gate voltage must be a certain amount less than the source voltage.
For NMOS the drain is connected to the -v voltage. This is because to turn the NMOS on, the gate voltage must be a certain amount greater than the source voltage.
By placing the terminal that the gate-switching voltage is "referenced to" nearest to the voltage source, you can ensure that your microcontroller can switch them most easily (assuming the gate-source voltage required is low enough. If it's too high you need to find other transistors or add voltage boosting circuitry).
Remember that in this configuration, a "+5V" signal will switch NMOS on, but PMOS off and a "0V" signal will switch NMOS off but PMOS on. So if you want to drive the whole H-briodge with just two PWM signals, you need to use an inverter (but then you can't brake). Another way to do this is to use pull-up resistors on the high-side PMOS gates and then also connect the gate to the terminal of the motor. This way when the NMOS activates, it pulls down the voltage on the motor terminals. Since these terminals are connected to the PMOS gate it will also pull down the PMOS gate voltage and activate the PMOS. The pull-up resistors make sure the PMOS is off the rest of the time. Look at this H-bridge circuit for an example of what I mean:
https://www.electro-tech-online.com...tachFiledogettargetopenservo_21_schematic.pdf
If you want to brake you have to use 4 PWM signals so you can control each transistor independently.