Recommended BibTeX Format

Here are some of my recommendations and personal preferences for maintaining a BibTeX file for a bibliography to be used with LaTeX.

General

Paper titles do not need capital letters for the first letter of all words. Example:
title="This is the Title of a Paper on the {ABC} Protocol",
BibTeX will typically convert all but the first letter to lowercase ("This is the title of a paper on the ABC protocol"); this is ok. However you should force uppercase for acronymns or names using the braces. You should avoid using formats like (let the BibTeX style deal with the case):
title="{This is the Title of a Paper on the ABC Protocol}",
Dates (days and month) can be created using the string for the days and the abbreviation for the month:
month="4--6~" # aug,
The BibTeX style will then determine whether to show "4-6 August" or "4-6 Aug.". Similar approach can be used when, say a journal is published bi-monthly:
month=jan # "/" # feb,
Author names can be in many formats in BibTeX; I recommend using one consistent throughout your database. Full names are good - "Steven Gordon" - as opposed to abbreviated ("S. Gordon"), but sometimes you may not know the full name. Keywords are useful in your database. You can use the keywords field to store a list. Additionally, you may want to store other information in user-defined fields like summary, URLs, source of entry. But remember, nowadays it is easy find a paper on the Internet by searching and URLs often change. I recommend focussing on the mandatory information for each entry(see below), and keep the optional fields to a minimum. Abbreviations should not be used for conference and journal names. That is, use the full name like "Proceedings of the First IEEE Conference on Protocols" or the "International Journal on Protocols". However, often when you are writing a paper you will want to use abbreviations, usually to save space and fit within strict page limits. Although it is not ideal, the reality of writing papers with LaTeX/BibTeX is that you often have to do some manual fine tuning before submission. I try to follow the procedure of editing the paper for content and once the content is finalised, editing the paper for page lengths and format requirements. At this final stage, I will take the bibliography BibTeX has generated in the .bbl file, and copy and paste into my LaTeX source, removing the need for BibTeX. Then I can manually edit the bibliography, including using abbreviations where necessary, to fit within page limits. Again, this is not ideal, but I find it to be a reasonably practical approach. Entry keys must be unique. It is good to use a common format across all your entries. There are a variety of options, but I use:
lastnameYear-firstword
which is a combination of the last name of the first author, the year of publication, a hyphen, and the first word of the title. However I don't use common words such as "A", "The", "In", "On" etc. if it is the first word - instead I use the subsequent word. These seems to work quite well. If there is a non-unique entry (this doesn't happen very often - 3 or 4 times out of 1000 entries), then I append an addtional word or classifier to the end of the key. All papers I download and save locally I use the same name as the key, e.g. the paper referred to be BibTeX entry key gordon2008-example is saved as gordon2008-example.pdf. Some exceptions to the above key format is for special types of publications such as Internet RFCs (rfcXXXX) and web sites (web-author-firstword).

Conferences (inproceedings)

You should at least include: Optionally you may include a user-defined field to store other conference information, such as abbreviated title (e.g. "MobiCom2008").

Journal papers (article)

You should at least include:

Books (book

You should at least include:

Internet RFCs (misc)

You should at least include:

Phd Thesis (phdthesis)

You should at least include:

Web Sites (misc)

There are many different ways to refer to websites. One approach I often use is: The last accessed information is important for indicating the version of the (ever-changing) web page. However, it is impossible to keep up to date - I often update my database when I am using the web site reference in a paper or report I'm about to publish. The other fields you can include are month and year, especially if the page/article is dated (e.g. a news article). Remember, an alternative to using a reference for a website is to use a footnote in your article.

Templates

You can download a template BibTeX file containing the fields I recommend above adn simply use cut and paste to create your database. The template is also shown below:
@inproceedings{,
 title="",
 author="",
 booktitle="",
 year="",
 month="",
 address="",
 pages="",
 keywords="",
}

@article{,
 title="",
 author="",
 journal="",
 year="",
 volume="",
 number="",
 pages="",
 month="",
 keywords="",
}

@book{,
 title="",
 author="",
 publisher="",
 year="",
 address="",
 keywords="",
}

@misc{,
 title="",
 author="",
 howpublished="IETF RFC ",
 year="",
 month="",
 keywords="",
}

@phdthesis{,
 author="",
 title="",
 school="",
 address="",
 year="",
 month="",
 keywords="",
}

@misc{,
 author="",
 title="",
 howpublished="Web site:  [Last accessed: ]",
 keywords="",
}