Yeah I would not consider this a bug, but a limitation in the way tags work.
Because the other task wasn't tagged, it doesn't know what value to
use for the conditional. You could tag it something else, but you
would have to set it.
You could also technically fix this with changing to an 'only_if' (a
little more syntax) and checking if it was set first before checking
if failed.
Should look something like this:
only_if: 'is_set($installed) and is_failed($installed)'