I understand that both of these will insert html into an element.
What are the differences between these 2 methods though?
String:
$(\"div\").app
Is it just that you can do stuff like this?
$("div").append($("").html("Header"));
Exactly
Doing it this way creates for you a jQuery object which can further be manipulated with functions like append, css, addClass
$("div").append($("").html("Header")
.addClass("someClass")
.css("color", "gree"));
Or if you don't want to do further manipulation like this, then by all means pass it just a string, and you'll get the same result.