If we know her indifference curves, we can draw her budget constraint in with them on the same graph. After that, it is simply a matter of finding the outermost indifference curve that is tangent to (just barely touches) her budget constraint, and use this tangent point as her optimal combination of wine and glasses. In this case, it is the second indifference curve that optimizes her utility given her budget.

It looks like Tina will buy about 12 wine glasses and 2 bottles of wine. Even though the optimal amount is a little more than 2 bottles, she has to buy either 2 bottles or 3 bottles, and 2 is all she can afford. (When doing such problems, never round up, since that will land you outside of the budget constraints).

Why does it have to be the indifference curve that is tangent to her budget constraint? If it were an indifference curve that crosses her budget constraint, such as the first indifference curve, then we can see that the two points of intersection don't make her as happy as the single tangent point in the previous graph. By picking the outermost curve that still touches her budget constraint, we have maximized her utility. We can't pick a curve any further out, such as the third indifference curve, since she can't afford to buy more than \$100 worth of wine and glasses.

Obviously, budget constraints change with changes in income or price. For instance, if Tina now has \$125 instead of \$100, her new budget constraint will be a parallel shift out from her original budget constraint. The yellow shaded region represents the increase in possible purchases she can make:

On the other hand, if Tina still has only \$100, but the price of wine changes from \$20 a bottle to \$10 a bottle, her budget constraint will pivot to reflect this change: