The project that is currently building might have previously been triggered by an upstream project, a component it has as a build dependency with.
So the Upstream Cause which triggered a new build might either be an SCM change or another jenkins project.
A
/ \
B C
/ \ \
D E F
* SCM change triggers a build of A.
* The Verification stage triggers a build of B, C, D, E
* The build of B fails and consequently so does A.
...
* SCM change triggers a build of B.
* The Verification stage triggers a build of D and E.
* The build succeeds and so does all its downstream dependencies.
* Now it needs to rebuild A. It checks if the previous build of A failed because of this project.
So the upstream build cause might either be an upstream dependency or a downstream dependency.
Not sure what you ment with that. We have aprox 70 git repositories of libraries, utilities, programs with various dependencies among them. Some have many dependencies, some have few and some have none.
When someone push changes to remote, the git server has a hook that calls Jenkins URL with notifyCommit to trigger a build of that project.