<p>Can I get a 'when to use' for these and others? </p>

<pre><code>&lt;% %&gt;
&lt;%# EVAL() %&gt;
</code></pre>

<p>Thanks</p>

Check out the
Web Forms Syntax Reference
on MSDN.
For basics,
<% %> is used for pure code blocks.  I generally only use this for if statements
<div class="authenticated">
<div class="unauthenticated">
is used to add text into your markup; that is, it equates to
<div class='<%= IsLoggedIn ? "authenticated" : "unauthenticated" %>'>
<%# Expression %> is very similar to the above, but it is evaluated in a DataBinding scenario.  One thing that this means is that you can use these expressions to set values of runat="server" controls, which you can't do with the <%= %> syntax.  Typically this is used inside of a template for a databound control, but you can also use it in your page, and then call Page.DataBind() (or Control.DataBind()) to cause that code to evaluate.
The others mentioned in the linked article are less common, though certainly have their uses, too.