Joe, here are some simple guidelines.
Access will do its darnedest to find what you ask for. But you can help it by telling it what you believe it will ask for most often.
An index is simply a separate table that contains a sorted list of all key values and pointers to the records having those key values. The key values are the values of the field that was indexed.
Access puts a limit of 10 indexes per table. There is a reason for that. Access is a small-business DB that can help you make transitions to larger systems later. But start small, it's easier. So, having that limit of 10 indexes, you might be tempted to index every field if you have only 10 fields. But that's wrong. Here's why.
Sometimes you so rarely search in a given field that it isn't worth the space that the index requires, and for a large table, you can expect a large index.
Sometimes the field is too long for the index to be practical. Like, say, a 200-character text field. The key part of the index has to be 200 characters per pointer, too - so you just chewed up a lot of space.
Sometimes you have a compound index. If so, Access will use the compound to speed up its search even if you aren't searching on the whole compound key.
And sometimes the cardinality is wrong. (Whoops... what's that word?) Cardinality is a measure of how much you expect to get back from an average query. There are some guesses, but the fastest guess is also the simplest.
Suppose you have a unique identifier as a field in a table. One query = one record, cardinality = 1. If you search it often, it is a good candidate for an index. If it is truly unique, might also be a good candidate for being the prime key - if it is short enough.
Suppose that you have a field, Gender. M or F. Cardinality is going to be half the table size, whatever it is. If the table has 38K records, cardinality would be 19K on average.
Suppose that you have a field for an employee table, the job-description code. Which links as a foreign key to a separate job-description table. But in the employee table, let's say you have no more than about 50 job descriptions in the company. If you have 5000 employees, cardinality would be 100. And if you query on job descriptions often, that has the potential to reduce your search area down to 2% of the whole table. A job code might fit in an integer, surely in no more than a LONG. So that's actually quite short as a key.
So the goal is to balance what it gets and what it costs you. Really big key? Too costly. Infrequent search? Too costly. Another key exists that is at least helpful? Then a new separate key is too costly. Doesn't reduce your search that much? Might not be worth the effort. What is left? The fields that might benefit from having an index.
But there is one more cost to consider. Every time you add an index, you are adding work for Access to maintain that index. Add a record? Every index must be updated. Delete a record? Every index must be updated. Modify a record? ... you get the picture.
That's why database design is considered an art as well as a science.
My rule of thumb is that I will have a prime key. (PERIOD. ALWAYS. ... with a very narrow list of exceptions for temporary-lifetime tables, perhaps.) Then I will make a key and index on any other fields that are my primary search interests. But I will not make a key and index out of a field that is itself a foreign key.
The performance that you get from such a design will be astounding if you didn't have keys before.