Difference:
The first one executes the anonymous function expression:
    (function () {
        //some code here, angular code
    })();
The second one doesn't execute it:
    (function () {
        //some code here, angular code
    });
anonymous function is a function that doesn't have a name.
Background:
Basically, first we are wrapping the anonymous function declaration with first brackets, like: (), to make it a function expression:
    // this is a function declaration:
    function () {
        //some code here
    }
    // this is a function expression
    (function () {
        //some code here
    });
By itself it does nothing, as we are neither executing it, nor declaring it within the current scope. In other words, it's useless. Learn more about the difference between function declaration & function expression.
Now, we can use the function expression as a parameter to some other function, like jQuery does:
    // now jQuery is taking the function expression as parameter
    $(function () {
        //some code here
    });
Or, we can execute the function itself by using () at the end (This is how we invoke any function actually - in this case without any parameter):
    // Now the function expression gets executed.
    (function () {
        //some code here, angular code
    })();
This is also known as Immediately-Invoked Function Expression or IIFE.
The above examples don't have any parameter. However, if you have a parameter, you can pass it like so while executing:
    (function (c) {
        // Here c.log() is same as console.log()
        c.log("hello");
    })(console);
Note: I've added the parameter example because it may be less obvious without any parameter.
Best Practice:
Since functionally they are different, the question of best practice doesn't appear. Usually we use IIFE in cases where we want to execute something in a scope different from the current scope & we don't want to leave any footprint of function declaration, variable declaration etc. within the current scope.
Further Reading:
More discussion about this can be found in the following links:
- What is the (function() { } )() construct in JavaScript?
- What is the purpose of wrapping whole Javascript files in anonymous functions like “(function(){ … })()”?
- What is the purpose of a self executing function in javascript?
- You Don't Know JS: Scope & Closures.