These are good questions.
First let's distinguish a bibliography style from what I will call a "citation package". A bibliography style is a set of directives that tells bibtex
how to format the entries of your bibliography. It is (somewhat) independent of the citation package you use, although not completely. Bibliography styles are written in the BibTeX stack language, and in your TeX distribution have the extension .bst
.
So anything you supply as the style to a \bibliographystyle{}
command is a .bst
file.
APA style bibliography styles
As you have noticed, there are a few of these that purport to do APA style bibliographies:
apa.bst
apalike.bst
apacite.bst
What are each of these?
Both the apalike
and apa
bibliography styles are old implementations of a style approximating (but not strictly speaking conforming to) the APA style. They're probably fine to use for a paper for a course where you are told to use APA style references, but they should not be used for submitting to an APA journal, or for a course where the professor really cares about the exact use of APA. (For example, I'm a linguist, and I'm happy to let my students use apalike
if they want.)
The apacite
style is a style that tries to conform as much as possible to actual APA requirements. Since they change, it may not always be conforming, however, but it will be very close. The package is fairly up-to-date. It should be used with the apacite
package, and may additionally be used with natbib
. (See below.)
Citation packages
natbib
In addition to a bibliography style, you also typically need a package to manage citations, since the original TeX system was not terribly well set up for author-year style citations like the APA. Here is where natbib
comes in.
The natbib
package provides a set of citation commands plus some other customizations that are especially made for author-year citations like APA uses. Whereas plain LaTeX provides only a \cite
command which has a single optional argument for a post-citation note, natbib
defines two main citation commands \citet
and \citep
, each with two optional arguments: one for the pre-note and the other for the post-note.
These commands produce the two basic forms most author year systems need:

apacite
Now what does the apacite
package do? It provides a different set of citation macros for doing citations:

But it also allows you to use the natbib
citation commands by passing it the option natbibapa
.
In addition to these citation commands, apacite
provides a whole bunch of extra citation commands, including intext bibliography items (\fullcite
) and even fancier things like citations with authors masked (useful for submitting to APA journals.)
Because of all of this functionality, and because the APA changes its requirements fairly often, the apacite
package uses its own bibliography style, apacite
, as mentioned above.
Can you mix and match?
If you want to use the apacite
bibliography style, you should definitely load the apacite
package. There is no need to load the natbib
package to use apacite
, but you can load it if you prefer to use the standard natbib
citation commands in addition to the extra commands that apacite
provides. Provided you don't pass any options to natbib
when you load it, it doesn't matter if you load both apacite
with the natbibapa
option and natbib
, but it's not necessary. But if you do want to use natbib
with apacite
you must pass the natbibapa
option to apacite
.
The apa6
document class
The apa6
document class, as you note, is designed to format an article for submission to an APA journal (it can also simulate what the finished article will look like.) So what it does is format things in the way the APA (in its infinite wisdom) prefers: double spacing, set margins, a specific title page and running head etc.
The class is agnostic about which method of citation you use, but it knows about natbib
and apacite
and these can be used as package options to the class. It also allows you to use the biblatex-apa
package as well. I would not use this class unless you are submitting to an APA journal or you have a professor with an APA fetish who wants you to conform to the same requirements exactly.
What about biblatex-apa
?
One question you didn't ask, but I will add to the answer also, is that there is yet another way of dealing with citations which is quickly becoming the de facto standard, as many of us are actively using it: this is the combination of biblatex
as a citation package plus biber
as a replacement for bibtex
to do sorting. For more information on this see:
There is a very good APA style for biblatex
. If you really need to use APA style, I would probably recommend using it over any of the others. You would then not use a \bibliographystyle
command nor would you load either natbib
or apacite
as packages, but instead would use biblatex
with the package option [style=apa]
instead.
See this question for a sample document using biblatex-apa
.
Perfect APA Style Bibliography
And finally some comments on what "APA style" means
Unfortunately the term "APA style" has come to have a bit of a generic meaning. This is kind of like the way 'xerox' or 'kleenex' get used. These are officially brand names, but get used to mean the generic of the kind in (N. American) English.
"APA style" is often used this way too, to mean a style is more or less like APA but depending on the journal may have minor differences. But if they ask for APA style and you use the official one, you are certainly off to a good start.
The fact that a journal may want certain changes from the orthodox APA style is a strong reason for preferring the biblatex
method over the apacite
method. It's notoriously hard to tweak .bst
files, and the BibTeX language is not very easy to understand. But in biblatex
all of the formatting is relatively accessible via regular LaTeX commands. So if you are submitting to a non-APA journal, you would probably be better off using biblatex
and modifying its default authoryear
style since it will be much easier to make changes to the standard biblatex
styles than to a heavily customized style like biblatex-apa
if needed. See the following question for details on how to make some common modifications.