- The fully refereed journal version, even if it is "to appear".
- The reviewed, though not usually refereed, conference proceedings version, again even if it is "to appear".
- On an electronic archive, like arXiv or ECCC.
- As a departmental technical report.
- On a generic web page, like a personal page.
- As a "Manuscript", if I have seen the paper but it's not publicly available.
- As "Personal Communication" if the paper doesn't exist.
The journal version can distort precedence. Paper A that depends on paper B can have a much earlier journal publication date. If precedence is a real issue, say when I am trying to give an historical overview, then I will cite both the journal and conference versions.
What if you use a theorem that appears in a page-limited conference paper but who's proof only appears in the longer tech report. Then I cite the conference paper for the theorem and the tech report for the proof. Even if a proof exists in a paper, I'll often cite another paper or book if it has a cleaner or simpler proof.
What if you cite a paper for a theorem for a proof that doesn't exist (the infamous "will appear in a later version of the paper")? If your paper critically needs that theorem, you really should give the proof for it yourself. At the very least later papers will cite your paper for the proof.
What if the conference or journal version is not on-line or behind a pay wall? I still cite the latest version figuring that if someone wants to read the paper they can use a service like Google Scholar to find an accessible version.
I try to use the same rules for links to papers on this blog because it's more important to give out the citation. If someone wants to download the paper again it's usually easy enough to find it.
In my .bib file (of bibtex entries), I replace the entries of papers as they get updated under the same citation-key. That way when I go back to latex older paper they get the latest references. We have too many people in our field who don't bother updating references, pointing to a tech report when the conference or journal version has been published.
Should you add hyperlinks in your bibliography to other papers? Nice if you do so and probably good if you are young and get into the habit now. But I haven't found the impetus to add links to papers in my now quite large .bib file.
In my ideal world, each research paper would have a web location which has human and machine readable descriptions of and pointers to all versions of that paper. We would just input that location into bibtex and it would automatically pull the information from the web and make the appropriate entry in your references. Then we would all cite correctly, or at least consistently.