The Variables tab (in your project's sidebar) is where you define named values your app can store, display, and react to, a running score, a counter, a flag, a small inventory list. Each has a Name (for your own reference), a Type (Number, Text, True/False, or List), and an Initial Value it starts at every time the app opens (values are never saved between launches).
Showing a variable on screen
Any Text block has a "Show variable" field, paste a variable's ID there (shown under its Delete button on the Variables tab) and its current value appears right after that block's own text, updating live whenever an action changes it.
Changing a variable
Four actions work on any Button, header action, or similar: Set Variable (Target: variableId,value) sets it to an exact value; Change Variable (Target: variableId,delta) adds a number to it (delta can be another variable's ID with a $ in front, e.g. $otherVariable); Reset Variable (Target: just the ID) restores its Initial Value; Calculate (Target: variableId,expression) evaluates a small math expression like score + 10 * combo (bare words are read as other variables' IDs) and stores the result.
The Condition block: real branching
A Condition block compares one variable against a value (equals, not equals, greater than, less than, or contains) and, only when that's true, runs its own action. Trigger it from anywhere with the Check Condition action (Target: the Condition's own ID). Nothing happens on a false result, for an "else" branch, add a second Condition with the opposite comparison and check that too. The Language Practice template puts this together for a real, working example: tapping an answer sets a variable, a Check Answer button checks a Condition against it, and a score variable updates live on screen.
Tip: Unlike Dialog/Notification IDs (also app-wide on Mobile), Condition IDs work the same way, app-wide, so one Condition can be checked from any screen.