You have made many wrong assumptions in this question. First theoretically speaking,
- Filters do not work in the way to 'pick up elements' (they work on principle of edge detection).
- You have assumed only a single combination of filter weights will give the desired output (assuming continuous weights not binary). This is especially in prominence in the problem of Regularization where we want to choose a set of weights without over-fitting data.
- The error you used looks very similar to Perceptron update rule (squared error gives the same derivative, but make sure you are not confusing the two).
- Backpropagation through 'dead ReLu's' is not possible (see this answer for more details).
Now, let us check mathematically:
Input Volume:
$$
\begin{matrix}
1 & -1 & 0 \\
0 & 1 & 0 \\
0 & -1 & 1 \\
\end{matrix}
$$
Desired Output:
$$
\begin{matrix}
1 & -1 \\
0 & 1 \\
\end{matrix}
$$
Note, in this step you desire an output which is negative (element (0,-1)), but you are forward propagating through a ReLu which is cutting off the negative part, thus the gradients have no way to communicate or update the required negative.
Basically,
$ wx \rightarrow ReLu \rightarrow y$ is happening and if 'x' is a negative number then $y$ is always $0$ thus $(target-y)$ is always $target$ and hence whatever the value of $x$ error remains constant, and if we want to backpropagate (assuming squared error) then:
$\frac{d}{dw} (target - y)^2 = 2*(target - y)*\frac{d}{dw}y = -2*(target - y)*0 = 0$ (Remember from the ReLu output graph slope is $0$ in the negative region).
Now, you randomise a filter:
$$
\begin{matrix}
1 & -1 \\
1 & 1 \\
\end{matrix}
$$
apply ReLu and get the following:
$$
\begin{matrix}
3 & 0 \\
0 & 1 \\
\end{matrix}
$$
again you have chosen you target to have a negative number which is not possible in the case of ReLu activation.
But continuing you get the error as:
$$
\begin{matrix}
-2 & -1 \\
0 & 0 \\
\end{matrix}
$$
use error to compute gradients (which again you have calculated wrong,by Backpropagating through ReLu's with ) values and also missed the minus sign associated with the output, but you have compensated it by adding it to the $w$ whereas the convention is to subtract):
$$
\begin{matrix}
1 & 2 \\
1 & -2 \\
\end{matrix}
$$
And get the new filter as:
$$
\begin{matrix}
0.5 & 0 \\
0.5 & 0 \\
\end{matrix}
$$
This is a pretty good approximation of the desired filter (even though the previous steps have wrong assumptions, but it does not matter much, since what you essentially did was use a linear activation function which will work, if you go through enough iterations). So basically you are using a Linear Filters and the details are too hodge podge for me to go into, so I will suggest some resources for you to see ReLu backpropagation:
Deep Neural Network - Backpropogation with ReLU