What does it mean for a variable to block a path between other two variables? What does it mean for a variable $Z$ to "block" the path between variables $X$ and $Y$ in a causal model? What is the formal definition of a "block", and how can I intuitively understand this concept? How can I visualize it? I think you should also define what a path is and maybe provide a diagram.
 A: Given a causal model (with the associated graphical causal model), we can determine if the involved random variables are dependent or independent. Let us recall what it means for two random variables to be independent. Two random variables, $X$ and $Y$ are independent if and only if $P(X=x, Y=y) = P(X=x)P(Y=y)$, for all $x$ and $y$, otherwise they are dependent.
In context of causal models, when people refer to a "path", they (usually) mean an "undirected path". For example, say we have the graphical causal model $A \leftarrow B \rightarrow C \rightarrow D \leftarrow E$. In this case, $A, B, C, D, E$ is a path from $A$ to $E$ (and vice-versa), $C, D, E$ is also a path, but from $C$ to $E$ (and vice-versa). In other words, there is a path between two random variables if they are connected, regardless of the directions of the edges, that is, to find a "path" you ignore the direction of the edges. In fact, in a causal model, the direction of an edge only represents a causal relation, whereas "paths" (as defined above) are used to determine dependency relations between random variables.
In causal models, we have three types of basic structures: chains, forks and colliders. A chain is of the form $A \rightarrow B \rightarrow C$. A fork is of the form $A \leftarrow B \rightarrow C$. A collider is of the form $A \rightarrow B \leftarrow C$, where $B$ is the random variable (or, in graph theory terms, the node) which we call "collider".
The theory of causal models states that chains and forks do not block the "flow" of dependency between variables, that is, if there are only chains and/or forks in the "paths" between two variables, say $X$ and $Y$, in the causal model, then these variables $X$ and $Y$ are likely dependent. In this case, we say that the paths between $X$ and $Y$ are "unblocked". We can think of as a "path" as a pipe where "dependency" flows. 
However, the theory of causal models also states that if there is a collider node, let us denote it by $Z$, in the path between two random variables $X$ and $Y$, then that path is "blocked" by $Z$. We thus say that $Z$ blocks a path between $X$ and $Y$. Nonetheless, $X$ and $Y$ are not necessarily independent. They are independent if all paths between $X$ and $Y$ are blocked.
To summarise, a "path" can be "blocked" or "unblocked". If all paths between two random variables, $X$ and $Y$, in the same causal model are blocked, then $X$ and $Y$ are independent. If there is at least one unblocked path between $X$ and $Y$, then $X$ and $Y$ are likely dependent. A path is thus associated with dependency relations (and not causal relations) between random variables in causal models: we should not confuse causal and dependency relations, even though we are attempting to determine dependency relations between random variables in a causal model!
In reality, there are other ways to block a "path" between two random variables $X$ and $Y$ other than having a collider node $Z$ between them: if there are only chains and/or forks in the "path" between two random variables $X$ and $Y$, we can condition on the random variables of either one of middle elements of the chains or the middle element of the fork (i.e. the fork node) and, in that case, the theory of causal models states that we would "block" that path between $X$ and $Y$. Analogously, we can also unblock paths which contain a collider by conditioning on the collider node. So, for example, if there was an unblocked path between random variables $X$ and $Y$ and that path only contained forks, if we conditioned on a fork node, we would block that path. Similarly, if there was only one collider node in a path between these variables, we could unblock this path by conditioning on this collider node.
So, the process of "conditioning" reverts the roles (in terms of "blocking" and "unblocking" paths) of the basic structures (chains, forks and colliders), when it comes to find dependency relations between random variables.
