Yes, all your lifecycle assumptions are correct.
If an object exists at the start of the game, or is made to exist at any point during the game, then has_not_created will permanently return false. is_exists is for the current existence status of an object.