1) corretto
2) corretto
3) modernizr esegue principalemente una detection delle nuove features, ad esempio se il browser può o meno usare la geolocation, canvas, video, localstorage, etc.
Inoltre è pensato per integrarsi con boilerplate sostituendo la classe no-js in testa all'elemento <html>. Usarlo o meno dipende da quanto complessa è la tua pagina e se devi prevedere meccanismi di fallback
4) Nei vecchi IE lo shiv risolve il problema di fare riconoscere gli elementi html5 solo quando già presenti nel markup. Se devi crearli dinamicamente con jQuery < 1.7 (o con i normali metodi javascript) ad es
codice:
$('<figure>...</figure>').appendTo($('body'));
devi includere un altro script chiamato innerShiv da richiamare così
codice:
$(window.innerShiv('<figure>...</figure>'), false).appendTo($('body'));
jQuery 1.7 risolve quest'ultimo problema.