How to understand rail to rail input circuit?
Using a current source helps to deliver a specific gm as well as ensure that the transistors stay biased in the correct region throughout the wave form. A resister placed there would allow that node to "wobble" which isn't good because you solve this circuit by assuming it's symmetric and that node is an AC ground.
You solve differential circuits like this by only looking at half, and then understanding that the other half will be inverted for an inverted signal being delivered to IN-. So looking only at IN+, at 0.5Vcc, nodes 1 and 4 would be around 0.5Vcc as well (not exactly but that's okay or even good in most cases). If you pull IN+ to ground, that nmos will turn off. The resistor then pulls node 1 to Vcc. The Pmos will be hard on and the current source will push the most current it can through that Resistor, which brings the node 4 voltage to almost Vcc. If you pull IN+ to Vcc, that nmos will be hard on. The current source will pull as much current as it can through the resistor and the voltage at node 1 will be almost ground. The PMOS will be turned off and that resistor will pull the voltage at node 4 to ground. As you can see, by using the proper output for the correct half of the wave cycle, we can reach rail to rail on the output waveform. (solving for nodes 2 and 3 is just the inverse of nodes 1 and 4, assuming that the input of IN- is the inverse of IN+)