Well, if you replace the background using background_replace, it replaces the resource itself, not the in-room background (background_index):
Example: You have 3 external images of a sky, 1 day, 1 sunset, 1 night.
all you really need is create a blank background in your game, and use background_replace to replace the blank background with whatever bg you wanna draw
background_replace(0,working_directory+"/sky_1.png",0,0) would load the day sky
background_replace(0,working_directory+"/sky_2.png",0,0) would load the noon sky
and background_replace(0,working_directory+"/sky_3.png",0,0) would load the night sky
and if you use the background in question as a tileset, any and all tiles used on it would be replace with the corresponding tiles on those sets as well ( good for day/night engines
)
If you'd like an example, I'd be happy to program one up