> I am not sure  why the constructor is used on the LHS of (2)

lift1 :: (a -> a) -> b a -> b a
lift1 o (MyNum x) = MyNum (o x) 

2nd arg to lift1 is b a

o expects a

by adding ctor (MyNum a), we get to a

lift1 o (b a) = ...

without ctor MyNum, x is b a, not a