Hi Susmita!
Very good question! This is the most important thing of Grasshopper to understand; Flattened list vs. Grafted lists. It has to do with how Grasshopper orders its data. A flattened list is the most simple case. Let's say I have 20 curves, I select them and insert them in the curve component. I will have a (flat) list of 20 curves.
So far so good.
Now let's say I want to divide those 20 curves into 5 points using the Divide Curve component. What happens is that the Divide Curve component takes the 20 curves one by one and outputs the 5 division points. This time the list is not flat but ordered in a tree-like fashion with 20 branches and within each branch the 5 points.
When you need to flatten or when you need to graft depends on the input list or another list you're trying to do an operation on.
I'm including a small definition that explains I hope a bit better what happens when you don't graft or when you don't flatten.
Also, check out these two lessons where the concept is explained a bit better:
https://thinkparametric.com/courses/grasshopper-102-data-lists-and-tree-structures/videos/221
https://thinkparametric.com/courses/grasshopper-101-introduction-to-parametric-modelling/videos/23
Hang on in there if you get this principle, you understand the most important thing about Grasshopper.
Good luck!
P.S. the definition: https://mega.nz/#!tc8FlQwR!tA1RtMW9ugPGkvU2j6s5Sxqa1UMlSSXirIWjrZH-vTI