Q:

Bracket vs brace

I found the terms bracket and brace used interchangeably.  Is there a difference, and what is it? 

A:

"Brackets" is used interchangeably for various symbols:

angle brackets for <>
round brackets for ()
curly brackets for {}
square brackets for []
and more, some of which are only used in certain regions or cultures

The more specific "braces" and "parentheses" are almost never used for other than {} and (), respectively.   Mathematics has several more (subtle) variations in addition and is formalized more than other fields. 
I prefer "braces" for {}, "parens" (informally or in the context of programming) or "parentheses" for (), and plain "brackets" for [], though "square brackets" is sometimes required to be explicit about the latter.   This gives you a one-word name for any of those common symbols.   (And don't get me started on the problems of angle brackets for grouping... :P)
To provide a non-text counterpoint, "bracketing" in photography is taking multiple exposures around a given value (which value—white balance, ISO, aperture, etc.—depends on what you're targeting).   This shows the use of "bracket" to mean "surrounding," which lines up nicely with the text symbols above. 

A:

I am not sure about other contexts, but in texts about programming you will often find these terms used as follows:
braces: {}
parentheses: ()
brackets: []
angle brackets: <>

A:

Square brackets [] are often simply called brackets, while curly brackets {} are often called braces (in the US, at least).   Someone using the term braces for square brackets is making a mistake, because most people will assume that person means curly brackets.   So, these terms are not interchangeable, although braces are a type of bracket.