Generally subtasks are good when it's a single well defined feature or problem and then they are few.
To be used sparingly. They're best used like keynotes.
Epics are for broad developments, looser defined. Best used as "bags" of tasks.
Sometimes epics might be disabled altogether and then you have only subtasks, and labels get to be misused as the bags of tasks. I personally consider that a pathological setup. It is much harder to work with and JIRA query tools don't work as well with it.
Really? Not to me, although I’m not clear when to make a subtask or start using an epic.