Say you want to bind a string to an element in Angular. No real problem, you just use expressions or ngBind.
If the string contains HTML that you want to parse, you can use ngSanitize.
But what if your HTML string contains a button that has an ng-click directive included in it? This won't work automatically, you'll need to use $compile.
So what is this compile service? According to the Angular docs:
Compiles an HTML string or DOM into a template and produces a template function, which can then be used to link scope and the template together.