Activity A started B using startActivityForResult, and B started C using startActivity. After that, the activity stack is A B C.
Now suppose, C makes startActivity c
Judging by the documentation for finish():
Call this when your activity is done and should be closed. The ActivityResult is propagated back to whoever launched you via onActivityResult().
This leads me to believe that A will get B's result even if C is in between the two.
Edit - after some testing I discovered some interesting interactions here.
The order of events, after some logging:
In other words, A gets B's result as expected, but it happens after C finishes and A is resumed.