In approximate detail, the idea of \@ is to indicate when punctuation is or isn’t ending a sentence. Why would you want to do that? By default, Plain TeX and LaTeX both have a feature whereby a little extra space is allowed after a sentence (whether a period or other punctuation mark) to help break the paragraph into lines. If you need a little extra space in this line, better to lump it after the period than add extra space between all the words.

This typesetting approach was very common (often to an exaggerated extent) in the 1800s and early 1900s but nowadays I think is less common. If you don’t like it, write \frenchspacing in your preamble and you can forget about whether \@ is ever required. However, when writing a LaTeX document for another source, such as a journal, it’s polite to follow their style and include such niceties.

The canonical example for using \@ is after abbreviations such as ‘Prof.\@ Crumb’. Without the \@, the space after ‘Prof.’ will be mistakenly enlarged—this is a common typographical mistake in (La)TeX documents.

Conversely, \@ can also be used to indicate when a punctuation mark should end a sentence. By default, punctuation after a capital letter is assumed not to end a sentence (so you can write ‘M. C. Escher’ without the \@). But if you happened to refer to someone by their initial at the end of a sentence you’d need to write, say,

… `So he did', said M\@. (New sentence) …

to ensure that the extra spacing was included after that final period.

I should also mention that I often don’t use \@ after punctuation in favour of typing an explicit space control sequence; that is, I prefer to write Prof.\ Crumb. This is shorter to type and perhaps more memorable.

However, there are some edge cases to consider. Other punctuation is ‘invisible’ to the marker for indicating sentence end; consider:

depending on the context of `a' and `b' (etc.) where …

The space factor (which is the parameter governing when and where this extra space should appear) isn’t ‘reset’ by the parenthesis and you need to write (etc.\@) instead. Here's another example:

… `Et cetera et cetera etc.' said the King …

Here, there will be extra space after the closing quotes ' (or '') that is incorrectly added due to the presence of the period; the closing bracket ] is also ‘invisible’ to the space factor.

The best idea in a case like this is to define a macro for inserting it all without your having to remember it; for example,

\makeatletter
\newcommand\etc{etc\@ifnextchar.{}{.\@}}
\makeatother

where you would write ‘(\etc)’ or ‘…, \etc, …’ but if you wanted to finish a sentence with it, you would explicitly include the period: