To quote from the Org Manual:
"Org greatly simplifies the use of outlines by compressing the entire show and hide functionalities into a single command, org-cycle, which is bound to the TAB key."
Well, it could simplify things a good deal further if, on issuing the command when point is *not* on a parent heading, (non-global) org-cycle would instead fold the subtree that point is in, i. e. do 'outline-up-heading' and 'hide-subtree' on the parent heading. This would make collapsing subtrees a lot easier and quicker as it could be done from any non-parent position inside a tree. It is very noticeable when collapsing multiple adjacent trees in succession.
Currently, hitting TAB when not on a parent heading merely returns an 'EMPTY ENTRY' message - not useful at all. 'Outline-up-heading' (C-c C-u) has to be called manually each time before hitting TAB to achieve what the user is most likely attempting to do anyway.
Personally, I doubt this change in behaviour would break much for users, unless one were to assume that there is a lot of Elisp code out there that relies on 'org-cycle' doing nothing in such cases, incurring the 'EMPTY ENTRY' reprimand to boot, rather than first checking whether point is on a parent heading. I don't see any drawbacks when 'org-cycle' is used interactively.