Interrupts can be trigged by the CIA chips and the VIC chip, and they are mostly used to trig specific pieces of code at regular intervals. In demo coding, timing is often crucial, and programmers may need to use cycle exact timing to achieve things like stable rasterbars. However, timing is not only about setting up interrupts. It can also be achieved through delay loops and simply by keeping track of exactly how many cycles it takes for a certain code snippet to execute.
About complex execution flow such as multiple interrupt handlers at the same time, threaded code, and similar. This usually involves interrupts in one way or another.