Да, это однокоренные слова.
Цепочка, демонстрирующая этапы образования слова бессонница, выглядит следующим образом:
спать → сон (бессуфиксный способ; процесс словообразования сопровождается усечением производящей глагольной основы, чередованием согласных (п // н) и гласных («ноль звука» // о) → бессонный (приставочно-суффиксальный способ) → бессонница (приставочный способ; процесс словообразования сопровождается усечением производящей основы прилагательного).
Цепочка, демонстрирующая образование слова уснуть:
спать → уснуть (префиксально-суффиксальный способ; процесс словообразования сопровождается усечением гласной и согласной производящей глагольной основы).
Напухнуть – просторечное слово, опухнуть – общеупотребительное и стилистически нейтральное. Грамотно: щека опухла.