Indifference curves are a relief map of a utility function. This should make it clear why INDIFFERENCE CURVES DO NOT CROSS.

The Two Goods - Two Prices diagram shows that the demand curve can be derived from utility maximizing behavior by an agent with indifference curves facing a budget constraint.

Changing prices can move the budget constraint, but cannot move the indifference curves. The decomposition of changes in demand into income and substitution effects is an important intellectual accomplishment. The substitution effect unambiguously moves consumption away from (toward) the good that increases (decreases) in price.

An increase in the price of X1 is normally thought to decrease the demand for X1.

An increase in the price of X1 causes demand for X1 to go up. The income effect reverses the substitution effect.
