Разница между «уснуть» и «заснуть» заключается в смысловом акценте. 1
«Уснуть» — значит погрузиться в сон, слово передаёт полноту и исчерпанность действия. 1 То есть смысловой акцент на том, что начатый процесс завершился. 1
«Заснуть» — тоже погрузиться в сон, но смысловой акцент на начале процесса. 1 То есть погружение в сон уже произошло и теперь начался сам процесс сна, который и находится в центре внимания. 1
Однако в силу того, что смысловые оттенки в этом случае очень тонкие, оба варианта в любых случаях употребления будут правильными. 2
Также у глагола «уснуть» есть ещё значения «перестать проявляться, ослабеть, притупиться» и «умереть», которых нет у глагола «заснуть». 3