Are there any "best practice" guidelines or tips for UI elements? Any helpful advice?

One piece of advice I can offer is to let your UI observe references and variables in the wild rather than attempt to explicitly send updates to the UI from those objects. For example if your character takes damage and loses health dont bother to make an “Update HUD” function. Just make sure your HUD knows what character is the player in question then just have the hud do all of the work of updating itself based on its own observations.

You will save yourself a lot of time on this.