If I'm not wrong, then:
When you unroll, as you said, you expand this loop and if you look into the compiled code, you'll easily see that, but bear in mind that this is only possible when the loop has boundaries, though you can specify the max number of iterations in the unroll attribute, e.g.
[unroll(5)] // # Of iterations goes to max 5!
Now the perhaps more interesting is the Loop attribute. While enabling it, ( [loop] ), you enable the 'flow' control inside this loop. The shader assembly now has the ability to jump/branch to a new statement of execution, which is noticeable in the compiled code. Now this flow control can be set statically in compilation time, or it can be predicated controlled, or even dynamically controlled (Allows you to set the boundaries at run time, and that boundary can change through the life ).
But several challenges appear while setting the loop attribute, as:
Gradient-based operations must be moved out of flow control to prevent divergence. Performance may improve by using a non-gradient operation
Sometimes (I've always had them inside loops), the HLSL compiler tells you that you are doing something illegal, which prevents compilation. So apparently you may NOT use the Gradient Operations. These operations are mainly used while sampling (And in some other cases, but I'm not sure what), as for when (Example) you have a full screen quad, you provide some vertices to it, and some texture coordinates as well, but HLSL needs to interpolate between them (Or what operation they use for that...), and they will also need to calculate the right mipmap level for 'that' pixel. But don't fear, there are optional functions than Sample, like SampleGrad, SampleLevel, etc...
If I'm not wrong the Loop attribute WILL be slower in most cases and the jumping between statements costs just a bit, and you will not be able to (In most cases) use the Gradient Operations (Like when sampling). The unroll attribute is faster, you can use the gradient operations, but you have a fixed number of iterations (Though there are some tricks...)
And Guys, this topic isn't the clearest for me, so if you see anything wrong, please tell me as I'd like to prevent sending the wrong information to jdub.
Hope it helps.