Admittedly it is a bit confusing, as these phrases are often used quite interchangeably (at least by me). Here’s my take on what the difference is…
A user story may include several features. For instance, ‘As a user, I want to search for a job, so I can find my next career move‘ might include various features, such as simple search, advanced search, faceted navigation, sort, filter, sign up for email alerts, etc.
A user story this big would be considered an epic, since it’s a very big user story. Epics can (and ideally should) be broken down into further user stories to make them easier to handle.
Each of these features can be broken down into tasks. For instance, the advanced search feature (which could also be expressed as a user story of course) might include back-end development of the search index, front-end development of the search box, an API to find the most relevant search results, front-end development of the results page, writing test cases, executing the tests, configuring the search servers, etc.
Themes, on the other hand are just a broad way of describing an area of focus. For example, the theme of the next 2 sprints might be ‘job search’, after which it might be something else, say ‘apply for a job’, followed by ‘CV database’ for instance. Each theme would probably contain several epics or many user stories.
In terms of hierarchy, I think these aspects of the Product Backlog can be defined in as structured or as loose a way as you think is right for your project. I don’t think there need to be any hard and fast rules on this.
For anyone finding this terminology a bit confusing, I hope that helps!