Some questions regarding BLDC motor control

I want to make a BLDC motor control circuit with arduino but i am having trouble understanding the circuits especially when it comes to Mosfet.
I used N Channel Mosfet before to control devices on 12VDC but this time i want to control 48VDC BLDC motor.
I have these questions in my mind

1-Mostly circuits are using P Channel mosfet to controll BLDC but can P Channel be used as Low side switching too? like can we use it to pass negative voltage from it to the ground?
2-Can N Channel Mosfet be used as High side switching meaning passing Positive voltage from it?
3-Below is the example of the circuit can someone please explain it to me why are they using P Channel all over the place when it is clear that we need to Put Positive on one side and then get the negative out from other side to control motor.

Sorry for my english it is not my first language.

All the circuits I'd use are n-channel only, using 3-phase MOSFET drivers like the FAN7388.

[ your diagram shows 6 NPN transistors, not MOSFETs ]

Such circuits can run the MOSFETs at whatever voltage you like, 1V, 100V, makes no difference.
The driver chip requires a low power 12V supply. This way of doing things means the motor supply
and the driver supply don't have to be interlocked, either can be off without bad consequences. The
driver chips have a high-voltage capable floating high-side driver and use a diode-capacitor charge
pump to maintain the supply rail for the high-side driver.

Read the FAN7388 datasheet for how to setup a standard 3-phase bridge - its basically just 3 half-bridges. You can use 3 half-bridge driver chips if you want (there's much more choice of options that way).

Give up on p-FETs, they are pretty much only ever useful at 12V motor supply and harder to drive since
half-bridge drivers assume n-FETs top and bottom.

Be aware of shoot-through as somethine to avoid at all costs, or bang go the MOSFETs (literally!)