First, let’s clear a confusion: HTML does not exist per se in your client environment.
The very first thing the browser does when it downloads the HTML is parse it into a DOM, that is a tree of objects that materialize the structure of the html document. The html document itself is put away (discarded or saved into the cache).
Now, this is a special case, it is a template in Ember. It does not exist as such in HTML form. Rather, it is converted into a script that can directly manipulate the DOM to generate the tree of objects. The advantage is this script can be run again everytime one of the data binding changes, updating the DOM tree to reflect those changes.
Now, where does the input value live? Well, in the DOM while it is on the page of course. But not only.
Ember follows a good practice of JS, which is to never use the DOM as a datastore. That is, DOM is write-only. So when the user changes the input field, the contents are stored in the DOM by the browser, and by the input component by ember. Which actually updates its value binding.
When your conditional is false, the corresponding part of the script will just destroy the relevant DOM nodes and Ember components, including the input. But the value still exists. It is wherever you told the input component to write it.
Thus, when the conditional becomes true again, and Ember recreates and renders the components again, the input will be initialized with the value.
That’s about it. I am no Ember expert, so maybe I left some inaccuracies that someone will, hopefully, correct.