I will write this a new answer, as I am posting some code snippets here.
I also think this is very, very language dependent…
For instance, if you start coding in C/C++ coming from a Python background, you might find the { } to be quite annoying and can grow to hate them and their use, as in Python all is more… visual, to an extent (Mandatory indentation)…
However, it also depends heavily on how the compiler parses the code you have written and the parser CAN ARGUE with the way you format your code…
Consider the Go programming language, and assume you are writing a for loop to sum from 1 to 10 in it:
sum := 0
for i := 0; i < 10; i++ {
sum += i
}
In C++, it could be like:
int sum = 0;
for(int i = 0; i <= 10; i++){
sum += i;
}
Parenthesis in C++ are mandatory, in Go they can be ommited…
In C++ you can place the { right after the for loop is written, or you can place it in a new line (for being more visually appealing) like this:
int sum = 0;
for(int i = 0; i <= 10; i++)
{
sum += i;
}
However, almost nobody uses the second way… And why? Because all the usage of for loops was presented like the first way and coders assumed that form as the correct and natural way of writing a for loop, with the first curly brace right after the loop declaration…
This can be quite a dangerous thing to do, to make a standard out of something that it is NOT intended to be a standard… In fact, in Go, writing the curly brace right after the for loop declaration is mandatory or you will get a compile error, as the parser was written using GCC as a back-end in such a way that ; are placed everywhere where there are no { } or ( ), automatically… So we face a whole new situation where “embedded” programming style conventions are actually changing the way that compilers for new languages are being designed… Is this good?
I don’t know, only time will tell it, but this is something everyone should think about very carefully… 
Bruno