I don't want to get confused while making a script. Is there a difference, and if so, what is the difference?
GetChildren() returns an array (Lua Table with natural number indices) of all the immediate (first-generation) children of the Instance you pass it. Only things for which the passed-in Instance is their Parent.
GetDescendants() recursively visits all the children, childrens' children, childrens' childrens' children, etc... every single Instance in the hierarchy under the passed-in argument Instance, and returns references to all of them in an array.
:GetChildren() returns the first children of the object or model, :GetDescendants() returns all children