Answer to 1:
I think the decision to break a list into smaller list items boils down to the size and complexity of individual list items. There are no hard and fast rules about when you should break a component or not. I guess it comes down to the individual team's experience.
I guess you have to sacrifice some time for better organization of code. But for me, it’s easier to identify the bug when the system is broken into smaller parts because then I just can turn on/off some part to see exactly which piece of the puzzle is causing the problem.
I hope my answer makes sense to you.