Generally "bieten" means "to bid", "anbieten" means "to offer".
There are also cases where you use "bieten" for "offer", I think it's a more impersonal use then, for something that is "provided" or "featured". For example: Dieser Job bietet viele Möglichkeiten. (This job offers many possibilities.)
"Anbieten" is more like when it is directed at someone specific.
But it's really a bit difficult to distinguish between the two, I don't think it follows very strict rules. So if you don't know, try it with the difference between "bidding" and "offering" and if you used the wrong one, it's probably not fatal because they are sometimes also interchangeable, you would just prefer one or the other...
And if you don't know at all, just swallow up the "an" a little bit when you speak, then no one will know if you said it or not. ;-)
To add to Bellatrix's answer, when bieten is used to offer something, it's done in a passive way, whereas anbieten is more active. A good example to contrast the two:
The forest offers him protection.
Der Wald bietet ihm Schutz.
The woman offers him a coffee.
Der Mann bietet ihm einen Kaffee an.
In Formal English We can't say " a coffee" but a cup of coffee . So Translating ..."Wir bieten ihm einen Kaffee an" by : "We are offering him a coffee ." is absolutely wrong because the word "coffee "is an uncountable noun.we can't say coffees as a plural for coffee either . In this case, we must translate it by "We are offering him a cup of coffee".
anbieten a separable verb, meaning it's actually two parts: an|bieten. When it's the main verb, the first part goes to the end. The same happens with other verbs like zurück|rufen (to call back) and ein|steigen (to get on e.g. a train).
When it's not the main verb, like there's an auxiliary like werden, it's used as normal:
Ich werde ihm einen Kaffee anbieten
And for perfect tense, you put the 'ge-' in between the two words:
Ich habe ihm einen Kaffee angeboten (who invented that word? Seriously, geboten?)
More examples and explanations are here:
Different contexts. Serve in the context of a hotel or an establishment in a general sense is a synonym for offer. As in:
The hotel does not offer lunch.
Das Hotel bietet kein Mittagessen.
But that's different from offering someone something directly, in this case. German has the distinction between bieten and an|bieten.
I found this article how to recognize the difference between anbieten and bieten. Hope it is helpfull:
"We offer him one coffee" is indeed a valid translation of "Wir bieten ihm einen Kaffee an." In spoken German, you would place emphasis on "einen" to show that the quantity is important, causing "einen" to carry a meaning more like "one" than "a". Regardless of which meaning you are trying to convey, the declension is required and cannot be left out.
From this site: https://german.yabla.com/lesson-Bieten-versus-Anbieten-522
"There is, however, a rule of thumb that can help you remember the main difference between the two: anbieten is the specific process or act of making an offer, whereas bieten is a general state or condition, that is, a standing offer or a feature."
Is it equally correct to say, "Wir bieten ihm Kaffee an"? In English it sounds odd to my ear to hear "... offer him A coffee." Waiters in the US offer you "coffee", not "a coffee". What about other beverages? Would it also be "Wir bieten ihm ein Wasser/Tee an" und "eine Milch"?
In Germany, is it more common to hear the cashier at McDonald's ask if you want "Kaffee", or "einen Kaffee"?
If someone comes to my house and I bring out a plate of cookies, I ask "Would you like a cookie?" even though I mean they are welcome to take as many as they want. What would you most likely hear in Germany?