1. Dynamically updating existing sections of the current page.
You can use a named hook to mark the area you want to dynamically update, and a (replace:) macro to perform the update.
1a. Mark the area you want to update in your header tagged special passage.
health: [$health]<health|
1b. Update the contents of the named hook after changing the value of the associated variable within your Passage.
(set: $health to it + 1)
(replace: ?health)[$health]
note: You can name the named hook whatever makes sense to you or your project.
2. The looping is occuring because the contents of that footer tagged special passage is also being added to the bottom of your death passage, which results in the (goto:) macro being called over and over.
This issue is simply fixed by changing the existing condition in your footer tagged special passage to only be evaluated for passages other than your death one. You can use the (passage:) macro to determine the name of the current passage.
(if: (passage:)'s name is not "death" and $health is 0)[(goto: "death")]