Yes, you are right. If your attribute has a UOM defined (in this case "degree Celsius") and you are writing a value with another UOM ("degree Fahrenheit") of the same class, the value will be converted and stored based on the defined UOM ("degree Celsius").
You can either use AFAttribute.SetValue(object newValue, UOM uom) or create use AFValue with a specified UOM, like new AFValue(object newValue, AFTime timestamp, UOM uom) with AFAttribute.SetValue(AFValue newValue).
For a PI Point DR, will the 96 Farenheit value be converted to 35.56 Celsius before it is archived in the PI point?
For PI Point DR, it is converted before writing back to PI. One thing to note, there is another UOM setting in the PI Point DR setting. Ultimately a value is converted to this UOM when written to PI .
For a staic attribute with no data reference, will that value show up as 35.56 Celsius.
Like PI Point DR, static attributes save the value after conversion. With respect to your example, it should show up as 35.56 deg C without specifying UOM.