What's the most effective way to save/restore a PIC status bit
One way that you can do:

SAVE_CARRY:
    bsf    carry, 0
    btfss  status, c
    bcf    carry, 0
    return

RESTORE_CARRY
    bsf    status, c
    btfss  carry, 0
    bcf    status, c
    return


If you need to save the registers "W" and "Status", before execute an interrupt code, there is another way:

Save_Context:
    movwf w_temp
    swapf status,w
    movwf status_temp
    ;Your interrupt code here. 

Restore_Context:
    swapf status_temp,w
    movwf status
    swapf w_temp,f
    swapf w_temp,w
    retfie