I look forward to seeing other answers to this question, because I'm also looking to optimize my workflow.
In my current setup I have a single org document used as an article and as chapter of a thesis, call it research.org. The way I manage subtrees is by having :manuscript:
and :thesis:
tags to control export.
For example, in a second file thesis.org
I #+INCLUDE
the document with the following derivative:
#+INCLUDE: research.org :lines "5-"
# The first five lines of research.org contain the the title, authors, some file
# specific options and a #+SETUPFILE: manuscript.setup, which includes all #LATEX_CLASS
# and #+LATEX_HEADER derivatives. I also have a #+EXCLUDE_TAGS: thesis
When I now export thesis.org, my research.org content is included and gets exported with the class defined in thesis.org. When I export research.org directly, the content is exported with the defined in research.org (or in my case #+SETUPFILE: manuscript.setup
).
I imagine you could do the same by tagging subtrees that only belong to presentations and to articles, and by having a presentation.org file and a article.org file. The advantage of this approach with respect to drawers is that it gives a cleaner overview of what is going on, as tags are always visible and easy to toggle with EXCLUDE_TAGS derivatives. The disadvantage is the necessity of an extra file.
This solution is, however, quite portable in the sense that you don't need to roll any Elisp to get it working. That means your Org files should be exportable from any Emacs environment. It also gives you greater flexibility in defining your #+LATEX_HEADER
s, as property drawers aren't really fit for purpose here.