Hi Leo,
You are correct, you can only access fields of the current object in custom fields, unless you use a relations summary.
To accomplish what you are looking for, create a custom field on the work item level called Risk Rate, or whatever. This can either be a numeric field or a pick list that has the same values as the Risks Rate standard field.
In this example, i created the Risk Rate custom field as a numeric field. I then checked off the "formula" check box under the "field type" section and chose "Relations Summary" from the drop down.
In the "Set Formula" section, I chose "Custom" from the summary type drop down and then selected the "Impacted and Parents" relation.
Now in the formula entry box, i entered the following:
if(Targetobject.entitytype='project',Tonumber(tostring((TargetObject.RisksRate))), TargetObject.C_RiskRate)
basically, what this does is checks if the TargetObject is of type project, if yes, then it takes the value of that field and converts it to a number and enters it in the Risk Rate custom field. If the targetobject is not of type project (meaning a task is under a milestone or a parent task), then that object's Risk Rate custom field value is generated from it's direct parent (which in turn got it's value from the parent project).
Hope this is well explained, if you have any questions please let me know.
Thanks!