As you might now angular is a client-side framework which means it operates in user's browser. So it's not the best idea to leave complex computations to user's computational capability. Also, you might need access to data stored in some persistent storage on a remote server.
So the core idea is that you leave data storage and complex computation to a remote server, whereas angular just handles the presentation of your data.
That's why you need a way for angular to communicate with a remote server. And you use
$http
for this.
Natural way for server is to provide some REST API wich your angular app queries for data as following
$http({
method: 'GET',
url: '/yourApiEndpoint'
}).then(function successCallback(response) {
}, function errorCallback(response) {
});