Welcome to Intro to C Programming. OK, here we go! 
superolav:
i think its hard to understand ... when to use curly baces more than in the beginning and at the end of a scetch.
Braces signify a "block" of code that is basically an atomic (inseparable) unit. For example:
void loop () {
// Everything in between these braces is part of the loop() function.
// The '{' brace defines the beginning, and '}' defines the end.
}
// This is not part of loop()
There are many places where this construct is used. Here are a few others:
if (x == y) {
// Everything in these braces will be run if x is equal to y
}
else {
// Everything in these braces will be run if x is NOT equal to y
}
Or ...
x = 100;
while (x > 10) {
// Here, everything in the braces runs while x is greater than 10
x--;
}
You don't always have to use braces. Most of the examples above will work without them, but you're limited to one statement, like this:
// These two examples are the exact same
if (x == y) {
x++;
}
if (x == y)
x++;
// However, these two are NOT the same
if (x == y) {
x++; // Both of these lines will be executed
y--; // when x == y because of the braces
}
if (x == y)
x++; // This line will be executed ONLY when x == y
y--; // This line will be executed regardless
The example above illustrates the purpose of the braces. It "contains" a block of code so that it is treated as a single entity. The 'if' statement will either execute one single statement without braces, or it will execute everything within the braces.
You'll notice in the example above that the statement "y--;" is indented, so it looks like it matches the "x++;" statement right above it. Well, in C (including Arduino sketches), spaces and tabs mean nothing. In other words, these two statements are identical:
// This uses proper indentation (and line breaks)
if (x == y)
x++; // Part of the if statement
y--; // Not part of the if statement
// This uses improper indentation, but is technically the same code
// and thus works exactly the same way.
if (x == y)
x++; // Part of the if statement
y--; // Not part of the if statement
// though it looks like it was meant to be
The "x++;" line is part of the conditional statement. Another way to write it is like this:
if (x == y) x++;
y++;
The C compiler doesn't care whether you use a line break, or indent with spaces or tabs. The code is the same either way. Which brings us to your other question:
superolav:
How to put more statements after each other? Is it maximum two statements before";", or is it possible to add more statements/commands with a ","?
The semicolon ends a statement. You can stack them up any way you'd like. For example:
// This is how you usually see code written
x++;
y--;
x = y;
// But this is the same thing to the compiler
x++; y--; x = y;
The second example is usually poor form, but there's technically nothing wrong with it. Using multiple statements on a single line is sometimes used (particularly with trivial statements like the assignments above) by coders who feel it's unnecessarily verbose to put each statement on a separate line. It's purely aesthetic. You risk confusing readers, or having them miss the fact that it's actually multiple statements. (You could blame that on poor code reading skills, sure, but there's no reason to obfuscate your code.)
You also mentioned the comma operator. In general, it would be wise to forget that even exists in C, with the possibly forgivable exception of multiple statements in a for loop initializer -- although even then there's probably another way to do it that is less obtuse. For completeness, here's how the comma works:
// This line evaluates the first statement, discards any return
// value, then evaluates the second statement, keeping that
// return value
x = (y++, a + b);
// It is basically the same thing as this:
y++;
x = (a + b);
Since those two examples lead to the same result, why would anyone use the first? It only confuses the reader into thinking there's something special about the relationship between x, y, a, and b -- there isn't. While x ends up with the value of a + b, the value of y has nothing to do with anything -- it's just lumped in for no good reason.
As I said, you could argue that it might have a place in a for loop initializer like this:
for (x = a + b; x < 10; x++, y++) ...
Since you can't use multiple statements (terminated with semicolons) without breaking the three-statement syntax of the for loop initializer, you can squeak in some extra work by using the comma. Then, you get the chance to increment both x and y every loop iteration.
On the other hand, you could just do this instead:
for (x = a + b; x < 10; x++) {
y++;
// whatever else your loop does ...
}
That's much more obvious. The only thing it costs you is having to use braces when the for loop could otherwise be a one-liner like this:
for (x = a + b; x < 10; x++, y++) Serial.print("x = %u, y = %u\n", x, y);
Dubious benefit in my opinion, since many coders would look at that and have to remember what the comma does again. Some people have the same complaint about the tertiary operator:
// This is the tertiary operator that some people hate for its "obscurity"
x = (a == b) ? a : b;
// It does the same thing as this
if (a == b)
x = a;
else
x = b;
I personally love the tertiary operator for its concise and obvious (to me!) syntax. YMMV. Same with the comma I suppose. (Notice I didn't use braces in the if / else statement, since only one statement needed to be executed in each case.)