The problems with International Law in these times was, that it was still bound to a time of 1907 and not 1940. Too many things had happened, so that the law was "running behind" the reality.
However, we have some rules. And the main rule is: Do not harm civilians! This main rule was tried to be introduced the the Hague Conventions. But there rules for aerial warfare were missed. So these rules had to be evolved out of the existing rules. This is common in International Law, as mostly the conventions only write the rules, which already exist.
Another rule is, if the other side breaks a rule, you can break the rule, too, to enforce the other to keep the rule. This is called reprisal.
So we have to look at the bombings of ww2, in how far they were legal. At first the bombing of defended cities, like Warsaw 1939, was allowed (1944 is a completely other case). Warsaw was defended and became even a fortress. Also the Poles were warned and although they said, they would give up, they didn't. Thus the bombardment was legal.
Rotterdam was also defended. And the Dutch fought fiercely. There were no signs of a morale breakdown. So the Dutch were also asked to surrender. They did so. Because of several unlucky circumstances half of the German bomber force did not get the order to stop the attack on Rotterdam but another, secondary target (British forces). Thus this became a tragedy, an accident. But in no way a crime according to the International Law.
Because of planes targets could be attacked, which were not in range in 1907. So a German bomber could attack a factory in Manchester. As it was allowed to attack factories, at least the factories, which produce war material. Thus Coventry was a legitime target, as there was industry. That civilians were hit, too, is unfortunate, but these collateral damages are accepted by the International Law and making it no war crime. Thus also US attacks like on Schweinfurt were legal, too.
What was in no way acceptable was the attacking of civilians. Thus the whole bombing campaign of the RAF against Germany, except Essen, was a whole warcrime, as they willingly attacked civilians. And that was forbidden. That in cases also legitime targets were hit, does not justify these attacks, as they were conducted there to hurt civilians. Because the RAF started this campaign German reprisal attacks were no warcrimes as they were justified in the attempt to force the RAF back to legal means.
These attacks were also not justified, as that there were flak and other defenses. Indeed "defended city" as under Art. 25 meant only cities in range of ground troops. Thus a storming or a siege had to follow at once. Defenses, mostly even placed to stop illegal attacks, do not justify them, too. That would be to punish someone as murderer, who defended himself with a weapon he illegally owned against an illegal attack of the victim.
However, Belgrade is not justifiable, too, as the Yougoslavs were no Allies of Britain in the moment of the attack. And it is a problem, if you can do reprisals against an ally of an enemy, who breaks the laws. At least until the ally doesn't support them, you can't act against him with reprisals.
Dresden, as it was clearly against civilians, was a warcrime.
This is the legal situation. If you call something a warcrime, you need to argue in a legal way. Otherwise you can't blame something as warcrime, only if you want that it is one.
Adler