freechargecontroller.org. The blocking diode of the MOSFETS
M2 and M3 form a half H bridge to drive a buck DC to DC converter.  L1 and C6 form the LC low pass smoothing filter in this converter.  Since M1, M2, and M3 are all N channel MOSFETs, their gate terminals must be pulled higher than the source voltage for them to turn on.  This is not a problem for M3 as its source voltage is ground.  However, this is a problem for M1 and M2 as their source voltages can be as high as the supply voltage.  

The body diode in a MOSFET is a parisitic diode.  It is a parisitic because when you make a MOSFET the way those are built, you end up geting an extra diode for free whether you want it or not.  M1 is required to prevent the battery from discharging through the body diode in M2 when the solar panel voltage is lower than the battery voltage.  The body diodes in M1 and M2 will be back-to-back, preventing current flow.  R1 will turn off M1 by pulling the gate to the source.  However, when the PWM signal is applied to the MOSFET driver IC2, M1 will be turned on through diode D1.

The bootstrap voltage is quite simple.  Since the DC to DC converter is driven by a pulse width modulated signal, M2 and M3 are alternately opening and closing.  This means that the voltage on the common node oscillates between ground and the solar panel output voltage.  When this voltage is zero, C2 charges through D2.  C2 will charge to the solar panel output voltage.  Then the MOSFET driver grounds LO and connects HO to VB.  The voltage on C2 turns on M2.  Current flows through M2 and increases the voltage on pin 1 of L1.  However, since C2 is now floating wrt. ground, M2 stays on as long as there is enough charge in C2.  The charge in C2 will also be used to keep M1 on as long as the converter is running.  The gate capacitance of M1 should keep it on when the MOSFET driver switches M2 off. 

Note that this bootstrap method only works because this circuit is designed to be driven with a pulse width modulated square wave of several kHz.  It does not work with a static high/low signal as C2 will eventually discharge.