Instead of asking why the chi-squared test assesses independence, think about how you would test the association of two categorical variables against the null hypothesis of independence. For the sake of simplicity, consider two variables / properties A and B, each with two levels, "yes" and "no". A set of N units each has some combination of those properties. For example, A could be lung cancer, B could be exposure to radon, and the units could be people / patients. The numbers might look like this:
table = as.table(rbind(c(1,2),
c(3,4) ))
names(dimnames(table)) = c("lung.cancer", "radon")
rownames(table) = c("yes", "no")
colnames(table) = c("no", "yes")
table
# radon
# lung.cancer no yes
# yes 1 2
# no 3 4
Now, we want to test these variables for independence; what do we mean by "independence"? We aren't interested in testing if any of the proportions are any particular value. We want to know if being in a particular column is associated with being in a particular row. If the rows and columns are independent, knowledge of which column a patient is in provides no information about which row they are in.
Our total number of patients in this study is $N = 10$. How would those observations be distributed under the null (i.e., if the variables were independent)? Well, the probability of having been exposed to radon is $Pr(R = {\rm yes})$, and the probability of having lung cancer is $Pr(LC = {\rm yes})$, so from basic probability we know that the probability of having been exposed to radon and having lung cancer is $Pr(R = {\rm yes})Pr(LC = {\rm yes})$, and the probability of not having been exposed to radon and having lung cancer is $(1-Pr(R = {\rm yes}))Pr(LC = {\rm yes})$, etc. To get the expected count, we can multiply those probabilities by N. A problem here is that we don't know the probabilities of people being exposed to radon or of having lung cancer. We can estimate those probabilities from our data as the number who had been exposed to radon / have lung cancer divided by the total. Thus, we can estimate the component probabilities and ultimately the expected counts under the null.
ex = chisq.test(table)$expected; ex
# radon
# lung.cancer no yes
# yes 1.2 1.8
# no 2.8 4.2
When we try to compare the counts we observed to the expected counts we just calculated, we will run into two problems. The first is that the differences will sum to $0$:
table-ex
# radon
# lung.cancer no yes
# yes -0.2 0.2
# no 0.2 -0.2
To address that problem, we can square the differences and sum the squares. The second problem is that the magnitude of the differences (or their squares) will tend to increase as a function of the expected count. We can address that by dividing each squared difference by the expected count.
So now we have a perfectly simple, intuitive way to test if the variables are independent. Notice, however, that we have just re-created the Pearson's chi-squared test statistic:
$$
\chi^2 = \frac{\sum (O - E)^2}{E}
$$
All we need to know now is how the test statistic should be distributed under the null. It turns out it is distributed as a chi-squared on $(r-1)(c-1)$ degrees of freedom, where $r$ is the number of rows and $c$ is the number of columns. (Actually, it isn't quite because the chi-squared distribution can take any non-negative real value, whereas the test statistic can only a specific set of values when $N$ is finite; this fact leads to some additional complications that I won't discuss here.)
The above should cover questions 1 and 2. For question 3, it may help you to read this excellent CV thread: What is the meaning of p values and t values in statistical tests? To answer your explicit question about $.05$ and $.01$, those numbers are completely arbitrary and come from tradition. As far as I know, their exact origins are shrouded in the mists of time.