Certainty not a stupid question
“Normal” functions make direct calls to the EPANET library. So essentially you are bounded by the capabilities (and the limitations of the EPANET version you are using). Typically when you “set” something in EPANET, it stays in the memory, but it does not create a new .inp file.
“bin” functions are relying on a different way to execute EPANET. This does not involve calling the library, and the .inp file is not in the computer memory. Essentially, the epanet executable runs the Input file and it collects all the results in a binary file (hence the Bin name).
You may want to use Bin functions if you don’t want to call the library because it makes your code slower or because some functions haven’t yet been implemented in the EPANET library.
So, with d.setBinNodeTankInitialLevel(…) the toolkit will create a new input file with the new initial tank level and it will use that when executing bin functions. Perhaps you are running 10,000 Monte Carlo simulations, and you just want to avoid doing a step-by-step simulation for each time step.
With d.setNodeTankInitialLevel(…) the toolkit will change the entry in the memory where it stores the tank initial levels, without modifying the input file. Perhaps you are doing a few simulations where you make changes at various time steps.
Let me know if this helps. @Mariosmsk please correct me if I made a mistake