A little update on this one.
I tried figuring out why the boss dies in Dacicus' glitch, here is what I have so far.
A subroutine at $A87B is being called which has some function in keeping track of fireballs.
At the point the glitch occurs, fireball 1 (y value at $033D) has y-value 79 (#$4F)
This makes a check fail comparing to #$50.
At this point is where things get strange:
$B2A8:BD 3C 03 LDA $033C,X @ $033D = #$4F A:04 X:01 Y:91 S:FD
$B2AB:C9 50 CMP #$50 A:4F X:01 Y:91 S:FD
$B2AD:B0 AD BCS $B25C A:4F X:01 Y:91 S:FD
$B2AF:AD 0C 04 LDA $040C = #$00 A:4F X:01 Y:91 S:FD
$B2B2:D0 A8 BNE $B25C A:00 X:01 Y:91 S:FD
$B2B4:A9 01 LDA #$01 A:00 X:01 Y:91 S:FD
$B2B6:8D 0C 04 STA $040C = #$00 A:01 X:01 Y:91 S:FD
$B2B9:A9 C0 LDA #$C0 A:01 X:01 Y:91 S:FD
$B2BB:99 A4 03 STA $03A4,Y @ $0435 = #$02 A:C0 X:01 Y:91 S:FD
Register Y currently has a value related to Kuros' position on the screen.
For no discernible reason, the code proceeds to use this register to store #$C0.
The corresponding RAM address is $0435.
Now, $0435 is the location of Mikail's current attack pattern. It ranges from 0-5. The game performs a check later on to check what pattern he is in, if it can't find a match (which it can't since it is set to #$C0) the fight ends.
This explains why the fight ends, but not the graphical glitches.
I'm not sure of the possibilities to do thing with this glitch outside this particular fight.
EDIT:
with some more analysis, it seems that block of code is specific to Mikail's room. The game checks a RAM address ($006B) that carries the current room designation, in this case it is 5. When it is 5 is the only time this block of code is called.
As a side note, the game does another special check if the current room is 1. I so far have not found any room with such a designation, although it might be worth looking into further.