In Wolfram Language, the structure of expressions and how they are indexed can sometimes be counterintuitive if you're not familiar with the underlying representation. Let's break down your example to understand it better.
Consider the expression exp = 1 + x^2. In Wolfram Language, this is internally represented as Plus[1, Power[x, 2]]. The head of this expression is Plus, and it has two arguments: 1 and Power[x, 2].
exp[[2, 1]] returns x because it's accessing the first part (x) of the second argument (Power[x, 2]) of exp.
exp[[2, 2]] returns 2 because it's accessing the second part (2) of the second argument (Power[x, 2]) of exp.
Now, regarding exp[[1, 1]], the confusion arises because 1 is an atomic expression in Wolfram Language (it does not have a head and arguments structure like Power[x, 2] does). Atomic expressions include things like numbers, symbols, and strings. When you try to access a part of an atomic expression, it results in an error or an unexpected result because atomic expressions are considered as having no parts.
So, exp[[1, 1]] is trying to access a part of the atomic expression 1, which doesn't have any parts, hence the issue. In Wolfram Language, the parts of atomic expressions are not accessible in the same way as the parts of composite expressions.