Hmm weeell all of it is a touch difficult to explain on just a forum and I'm not the best teacher, buuut to get you started:
1. I thiiink Sonic Worlds has some default boss you can edit and do stuff from? But even if not - make a sensor, a big tall invisible block where you want the boss to start. Make a value "bossState" or whatever and set it to 1 when sonic hits the sensor (and might as well also destroy the sensor in that same moment), and when it's 1 (or higher?) reposition the camera to be locked within the boss area, and also make invisible walls appear so that Sonic can't leave the boss area. Theeen yeah, make an object that works as a boss, give it like "health" and "hurting" values, use "health" to keep track of HP (either like set it to 8 at first, or count upwards), aand set "hurting" to like 45 or something whenever Sonic has hit the boss and always tick it downwards/towards 0, using that value to see if the boss can take damage (as in, to make it so that the boss can't be spammed to death). And yeah, make a bunch of other values to actually control the boss actions/AI and all that.
2. A couple of different ways, buuut at the most simplest I'd just make a big vertical object that slowly moves to the right, either as Bouncing Ball movement or by just doing [Set X position to - X("fire_wall")+10], replacing 10 with whatever speed works well or with more uh, detailed events that work according to camera's movement speed etc. I'd prolly also leave the first block completely solid colored and rectangular just for checking collision, and then add the fire graphic on top, always setting the position accordingly. Aaand yeah, with the big object, just make it work by either setting the hurt value to 1 (if I remember how Worlds works) like any other damage would, ooor just have it skip right to Sonic dieing like an endless pit would. You're gonna have to dig through the events to find it all tho, but do try to use the pre-existing events instead of trying to add your completely own stuff, it can get very messy.
3. The INI object will be your friend for anything saving related. It saves values and strings, and they are saved as items within groups in a text file, like a group could be named "Settings" and the values/items "Volume" and "Screenmode" etc, you decide all the names yourself when using the INI thing. Whenever you save or load stuff you gotta always specify what group and item you're saving/loading. The file is normally saved within appdata folder (search %appdata% on windows to open it), and inside MMFApplications in there, and the files can be opened with Notepad for when you need to check them out or edit em manually, tho keep in mind that an open file doesn't update/refresh automatically, gotta close and open it again to see if there was any changes. Once you do have stuff saved, have the game read that info at the start of the game (or main menu or whatever), aaand then depending on what the values are show or hide different options within a menu. Like for example make a value "stage3beaten" in a group "gameprogress" that's set/saved as 1 when it is beaten (make that happen once Sonic hits the goal at the end of Stage 3), and then during main menu once the game reads that and sees it as 1 show Stage 3 selectable within the menu, etc. The INI object caaan be a touch tricky to get used to using at first, but yeah it works well.
Or, if you wanna go some super easy and simple route without actual saving, you could just make a simple password system. Like, maybe have up and arrow buttons on the screen that change symbols lined up, ooor make an edit text object where you type something. Aaand once said symbols or text says a certain thing you just jump the player to whatever frame the password is for. Like, maybe Motobug + Ring + Monitor takes you to stage 2, or a text "ROBOTNIK" takes you to last boss etc.