There are several uses of field collection, but as the name implies, it's all about "Collecting fields" into groups.
I have a personal use case where I have a content type called "Project". Each project, can have several "subtask"s, and each subtask has a boolean, "completed".
If I have a normal multi-value field for "subtask", how do I conveniently stick a "complete" checkbox on to them? That would be it's own multi-value field, and there would be no connection between the data points, nor any easy way to theme the edit page to make them look like they belong together.
However, since "subtask" is actually a field-collection with a "name" and a "checkbox", they are logically grouped together, both in storage and in rendering.
If one want's a "quick" solution to a similar problem, then FC is an excellent module. However, if I were to build something serious, I would first consider if Relation can solve the problem instead. This will probably not always be the case, but with a bit of extra work, using relation instead of FC will yield a more flexible solution.