As a general rule, indenting formulas like you would if they were code (which I've done for you in your question) really reduces the cognitive load (i.e. makes it easier to read/understand). That's helpful when you're trying to debug things.
The first example you gave looks like it was pretty close (if you are using it as the formula for a field update ...
If you write your formula more like code - something like this...
Formula Operators and Functions
IF(logical_test, value_if_true, value_if_false)
Determines if expressions are true or false. Returns a given value if true and another value if false
Determines if an expression has a value and returns TRUE if it does not. If it contains a value, this function returns FALSE.
Assuming that Deadline__c, ...
Parent to child relationships are one-to-many (1-M) and cannot be referenced in a formula field. Your requirement is not clear as to what should happen when there is more than one Offer for a single Opportunity, but generally, you would use a Rollup Summary to get some aggregate such as earliest (first) or latest (last) date, then use that rolled up value in ...