When is the find() method actually necessary? I've noticed code samples like the following that use the find() method.

{% for entry in craft.entries.section('blog').limit(5).find() %}
    &lt;li&gt;&lt;a href="{{ entry.url }}"&gt;{{ entry.title }}&lt;/a&gt;&lt;/li&gt;
{% endfor %}


I've noticed that this code sample works just as well without the find() method attached. Is there a particular reason we use find()? Are there instances where it's required? Should I be using it even if the code works without it?
The ElementCriteraModel description in the docs explains what the find() method does.

Essentially, when you use craft.entries you are building an ElementCriteriaModel object that represents the query that you want to make. That query doesn't actually happen until you call the find() method.

As the docs state, as soon as you treat craft.entries (or a variable that you have assigned it to) as an array, by using it in a {% for %} loop, or by calling the | length filter on it, find() is automatically called.

So in the example in your question, you can safely leave out the find() and it will be called automatically anyway when the {% for %} loop is executed.