The datacrystal page does list where and how level-up information is stored:
$721E6 to $732BD - Stat table for level-ups, determining which stats raise on every level for each class.
There are two bytes per level; the first determines the increase of physical stats using a bitfield:
0x80 - Strength
0x40 - Agility
0x20 - Vitality
0x10 - Intelligence
0x08 - Spirit
0x04-0x01: Amount to increase stat(s) by
The second byte determines which spell levels increase using a bitfield system, one bit for each of the 8 levels.
The order of classes is the same as the base stat table.
I don't think a spell's level is stored as a piece of data that you can change; it's probably based on its position in the list (the first n spells in the list are automatically level 1, the next n spells are level 2, etc.) That's the way it works in FF1 and FFL3, anyway. The only way to change the level of a spell is probably to exchange it with another spell, which means finding
all data related to the two spells and references to them (shops, enemy move lists, etc.) and swapping them...
Also, why does your hack give the Bard both Fight and Sing commands? Sing does exactly the same thing as Fight in the NES version.