Hi,
It's mainly semantics. Prior to REST Assured 2.0 it didn't support "given / when / then" which is more or less standard when you're doing some kind of BDD-like testing. Prior to 2.0 you probably did "given / expect / then" (which still works fine) but I think that "given / when / then" reads better and is easier to understand. There's one benefit with the "g/e/t" approach and that is that ALL expectation errors can be displayed at the same time which is not possible with the new syntax (since the expectations are defined last).
"and()" is also just syntactic sugar as indicated by the Javadoc. It can add readability if you're writing everything in a one-liner, for example:
given().param("x", "y").and().header("z", "w").when().get("/something").then().assertThat().statusCode(200).and().body("x.y", equalTo("z"));
Regards,
/Johan