Rooting allows users to gain privileged control over Android systems. It involves modifying the Android system to remove software restrictions. Custom ROMs are modified Android systems created by developers, while stock ROMs are the default systems from manufacturers. Rooting requires using tools like Root Genius and following steps like enabling USB debugging. It allows running custom ROMs and applications but may void the device warranty. Flashing involves installing new firmware or ROM versions using tools like Odin, SP Flash Tool and following steps specific to each device and ROM file. Popular sites provide ROM files, tools, tutorials and forums for rooting and flashing Android devices.