Good information use fully shift registar
Nice presentation as usual.
Very good episode.
One way to look at the difference between a flip-flop and a latch is the following.
A flipflop changes state with each event, ie a clock.
A latch holds a state until enabled to receive new data.
You see this effect in the one example where you have serial data coming in and then a separate latch for the output. Without the latch, the intermediate states of the shift register would be available on the output. In some circuits, that effect could lead to the wrong data triggering the next circuit stage. With the latch, you allow the serial data to accumulate until it is all available before you "latch" it into the output. This logic sequence allows you to pass only valid data onto the next circuit step.
The circuit you build determines if you can use a flipflop or a latch. An asynchronous circuit will usually use flipflops, again depending upon what you are doing.
A synchronous circuit will use latches to ensure that all of the stored data states are valid at the same time before you enable the next step to proceed.
The really cool thing with shift registers are that they enable you to do binary divide and multiplication of the data. Each shift step moves the data left or right performing a multiply by 2 if you go left or a division by 2 if you move right.
You can have lots of fun with shift registers.