For #1, you need to re-run the line that sets the AxisBox variable first. This is because the Column Switcher in JMP re-generates the report when the column changes, so the old references to the report and axis box are no longer valid.
// Always needs to happen in this order
gbReport = obj << report;
axisbox = gbReport[axis box( 1 )];
axisbox << Add Ref Line(14, "Dotted", yellow, "TR", 2 );
For #2, I do not believe there is an equivalent handler for Column Switcher like there is for the Data Filter. This might be a good idea for the JMP Wish List.