When should I create the Widget??

YMMV, but we spawn all widgets in the GameMode’s designated AHUD::BeginPlay() class / function.

Then if your objects need a HUD wiget then they can find it.

If you wanted to get more fancy, make an interface to your HUD and nothing would ever directly reference a Widget, just the interface.