Rigidbody AddForce in Update

Can the Rigidbody.AddForce be added in a method called inside the Update() or does it have to be called in FixedUpdate()?

What are the consequence of calling it in a normal Update()?

Also, ive read there should not be a rigidbody inside a hierarchy of an object that itself has a rigidbody. Is this true? What happens if a rigidbody contains a rigidbody?

Physics should be handled in FixedUpdate().

There are perhaps a few exceptions, like making a one off call to ForceMode.Impulse type AddForce or making a one-off velocity change.

The effect otherwise will be inaccurate physics and missed collisions.

If you start a coroutine, which is waiting for FixedUpdate, then the force will be applied in the next FixedUpdate. I guess, this is what you looking for.

StartCoroutine( applyForceAtPosition(RootObjectRB, transform.up * RecoilForce, transform.position, ForceMode.VelocityChange) );

protected IEnumerator applyForceAtPosition(Rigidbody rb, Vector3 force, Vector3 pos, ForceMode forceMode) {
            yield return new WaitForFixedUpdate();
            rb.AddForceAtPosition(force, pos, forceMode);
            yield break;
        }