The way your question is phrased makes it seem like you have a misunderstanding around formula fields.
A formula field is a calculated field - it doesn't exist in the database and the field's value is calculated each time the formula field is accessed (i.e. loaded from the database) or when explicitly recalculated. The formula doesn't define how the field is ...
The syntax of an IF logical function is similar to,
IF(logical_test, value_if_true, value_if_false)
It has three parameters. And AND has the following syntax,
AND(condition_first, condition_true) returns true if both condition are true,
So, in your case, you should use something like,
AND(f1__c == NULL, f2__c == FALSE),
$Profile.Name == 'System ...
Doing this is inefficient--you will need to query the entire table to filter for records. This will result in slow reports for large objects and is not scalable. Create a secondary field (date-time) and convert the string to a date using a trigger or Process Builder, then you can filter on that efficiently.
A formula won't get you there. You need to be able to query the user Id based on the name. This is a perfect use case for the Before Save Flow. In this flow, you first query the user to use with a Get Records element, then use an Assignment to assign the ID based on the Get Records by name. As a bonus, the Before Save Flow does not trigger a recursive save ...