1. This cannot be done with a calculation field. Changes to a calculation field's definition will result in the field recalculating over the entire table. But you could use a data field with an auto-enter calculation and then redefining the auto-enter calculation does not automatically assign new values to existing records.
2. There are IF and Case functions that can be used to calculated results conditionally.
If ( X = Y ; A + B )
would be an example of that.