Are surjective functions a pointless concept? What is the point of the concept of surjective or onto functions if you can just restrict the co-domain of your function to its image? Injectivity or 1-to-1ness is actually the defining property of bijections (sometimes called 1-to-1 correspondences), while all the question of surjectivity does is derail the argument into checking whether the image equals the co-domain.
Am I wrong in thinking this? What am I missing? Only situation where this concept could be marginally useful that I could think of would be some function for which it is easier to find an element of the co-domain for which no pre-image exists than to actually find the image itself.
 A: If you are given a function $f:A\to B$, you are right that injectivity is "intrinsic" to the function, in the sense that it only depends on the graph of the function; while any function is surjective "onto its image". 
Others have already explained why it can be unilluminating to look at the image of the function : sometimes (often) it's very hard to describe said image, and the question of surjectivity onto $B$ just becomes a question of equality : is $\mathrm{im} (f) = B$ ? As such, you're not solving the question by saying "oh it's surjective onto $\mathrm{im}(f)$", and this is the point I want to make : when asking for surjectivity of a function, you're often not interested in whether it's surjective somewhere, rather your real interest lies in the set $B$.
In other words, asking whether $f$ is surjective is not asking something only about $f$ (and its graph more specifically), it's asking whether the equation $f(x)=b$ always has a solution for $b\in B$. From that perspective, you can see why we're interested in surjections : they're the maps such that any equation is solvable. 
Let me give you a couple of examples where the concept of surjectivity is interesting :
-Suppose you have a field $k$ (you can think $k=\mathbb{R,C,Q}$ if you don't know a lot about fields) and a polynomial function $P\in k[x]$. Then $P:k\to k$ and you may ask whether $P$ is surjective. Of course it's surjective onto its image, but that's not really what you want to know. Being even more specific, take $P(x) = x^2$, then asking whether $P$ is surjective is asking "does every element of $k$ have a square root in $k$ ?" Now that is quite clearly an interesting question (that lead to the discovery of $\mathbb{C}$ !), and obviously it's the same as "is $\mathrm{im}(P) = k$?", but again, phrasing it like this doesn't really help, and doesn't remove the interest of the question.
-If you know Cantor's theorem, then you know that for any set $X$ there is no surjection $X\to \mathcal{P}(X)$. Now without the notion of surjection this result isn't even expressible, whereas it's a very important statement. Of course any function $f:X\to \mathcal{P}(X)$ is surjective onto its image : but who cares ? what we're really interested in is whether every element of $\mathcal{P}(X)$ is attained. 
In summary, surjectivity is an interesting notion when you're actually interested in the codomain, not only in the function : it indeed happens that sometimes you don't really care about $B$, you mainly care about $f$ and $A$, and in these cases you just say "corestrict to the image of $f$ and we're good"; but sometimes you're also interested in $B$, in which case the notion becomes relevant.
Let me end by noting that once you've asked the question of surjectivity, and, say, got a negative answer, the quest does not end here, because again, as you said, $f$ is always surjective onto $\mathrm{im}(f)$ : so if $f$ is not surjective onto $B$, it means that the equation $f(x)=b$ does not have a solution for all $b$, and so you enter a somehow more nuanced question, which is "for which $b$ does it have a solution ?" (which is of course the same question as "what is $\mathrm{im}(f)$ ?"; but perhaps phrasing it in terms of equations makes it clearer)
A: A concept is useful if it helps us say what we want to say easier than if we didn't have the concept.
You're right that if we're given some function out of the blue as a set of ordered pairs $(x,f(x))$, then it doesn't make much sense to worry about whether it is surjective -- that is just a question of which codomain to choose for it. But getting a function without any context is essentially never what actually happens when we do mathematics.
It is much more common that we don't start out with a particular function in mind, but with a list of conditions, and then we ask "is there any function that satisfies our conditions?", or "is such-and-such true about all functions that meet our conditions?" The conditions come before we have fixed a particular function to apply them to. Therefore we need vocabulary for speaking about those conditions much more than (or at least in addition to) speaking about individual, concrete, functions.
As it turns out, we relatively often need to speak about conditions of the form

The range of the function is exactly the set $B$.

for some already-known $B$ that comes from whatever we happen to be doing. This happens so often that it is convenient to have a shorter way of saying it.
In older language this could be expressed by saying that we're thinking about a function "onto $B$" rather than a function "to $B$" (which merely requires that the range of the function is a subset of $B$). That certainly works -- it is undoubtedly short -- but mathematics educators have generally found it more instructive and explicit to express the condition as "the function $A\to B$ is surjective". Some advantages of that are:


*

*"Onto" is almost too short -- it is relatively easy to miss the difference between "to" and "onto", especially for students who may not appreciate the significance of the distinction.

*Because "surjective" is an adjective, we can use it in contexts such as "because $f$ is surjective..." or "we now prove that $g$ is surjective". In the older language we have to say "because $f$ is onto", which is pretty suspect grammatically -- "onto" is a preposition, so neither it nor "onto $B$" ought to be a predicate.

*The notation "$A\to B$" is a convenient and memorable way to specify both the domain and codomain of the function you're thinking about. But then if you need to speak about the range being exactly $B$, there's not room to do that by putting a word in front of $B$, because that's where the $\to$ goes.
The downside of the usage is that the wording "$f$ is surjective" doesn't really make formal sense unless we imagine that $f$ is something that inherently knows what its codomain is supposed to be. This is not the case for the set-theoretic formalization of functions as sets of pairs. Some authors will explicitly define a "function" for this purpose as something like a triple of domain, codomain, and pairs, in which case "is surjective" is unproblematic. Others treat "is surjective" as an abbreviation for "has codomain $B$" and leave it to the reader to remember which $B$ from the preceding text it makes sense to understand it as.

By the way, in actual mathematical usage the main use (though not the only one) of "surjective" is as one half of the definition of "bijective". Injective functions are certainly a useful concept in its own right; so are bijections. It makes didactic sense to teach "bijective" as a combination of "injective" (which we already need to know about) and an additional condition which turns out to be "surjective".
A: Well, consider the exponential function and its counterpart, the logarithm function.
You need to know the domain and codomain to recognize that they are inverse to each other:
$\exp : {\Bbb R}\rightarrow{\Bbb R}_{>0}:x\mapsto e^x$ and $\ln: {\Bbb R}_{>0}\rightarrow{\Bbb R}:x\mapsto \ln(x)$. 
A: 
What is the point of the concept of surjective or onto functions if you can just restrict the co-domain of your function to its image?

I read this statement as questioning the point of using larger sets only when we know the image of a map, although it logically doesn't say anything about when we don't know the image; that is, I assume that OP sees the importance of codomains (which may be larger than the image) in defining the concept of function, whether or not their image is easy to determine. Having said that, in cases where the image of the function is easy to determine, it has been determined only because you still (implicitly or explicitly) have first assumed the type of outputs you want your function to have. The set of these is what we call the codomain, whether or not we can explicitly specify the range of values of the function. That is, suppose you have an expression $f(x).$ Then to completely determine its meaning as a function, you must know the class of objects to which $x$ belongs, and you must also know the class of objects to which $f(x)$ belongs -- this is important, for changing this class changes (i.e., limits or extends the range of) the operation itself, so that not even the range is yet fixed, until we have fixed this class of objects we want $f(x)$ to be in. Clearly, then, you can see that whether you like it or not you cannot escape the concept of codomains if you want to completely define the meaning of function at all, talk less of if you want to talk about ranges. Thus, it is basic, necessary to the concept of function. The image of a mapping lies in some set, whether we explicitly admit this or not -- this is the codomain. But some functions take all values in their (assigned) codomain -- clearly these have a property that not all functions with the same codomain have (recall that a function is not specified until the codomain is -- I think this is something you're yet to fully appreciate). We like it when we encounter such singular behavior. They are therefore called surjective, or similar terms.

Injectivity or 1-to-1ness is actually the defining property of bijections (sometimes called 1-to-1correspondences), while all the question of surjectivity does is derail the argument into checking whether the image equals the co-domain.

As explained above, you can't coherently and definitely think of a function without implicitly or otherwise making assumptions about its domain of action and its codomain of products. Thus, it appears that injectivity is only well-defined relative to having first fixed a codomain. Of course injectivity is an interesting behavior in itself, hence our also singling it out. But this doesn't detract a bit from the interestingness of surjectivity. They're different concepts. Now, you say that injectivity is the defining property of bijections, and this is true. Recall that a bijection is a function that must have a domain both ways; thus, if we do not know the range of a map, although it's injective, it's pretty much useless for most anything. However, since the business of finding ranges is not altogether neat, that is why you usually find the statement that if a function is injective and is surjective, then it is bijective. I don't know the book you're using, but unless they state it as a definition (which then should not be a problem -- a definition doesn't always claim to exhaust a class of objects; it only defines any class it finds interesting or convenient to deal with), then you need not read this as an if-and-only-if statement; that is, in such case they're not necessarily saying that surjectivity is also necessary for a map to be bijective. Thus, I now hope you see that the question of the surjectivity of an injective function does not derail anything, at least if you really want to use functions for something, and not merely think generally and abstractly about them.

Am I wrong in thinking this? What am I missing? Only situation where this concept could be marginally useful that I could think of would be some function for which it is easier to find an element of the co-domain for which no pre-image exists than to actually find the image itself.

In summary then, you are wrong in your first quote above in the sense that you can't think of ranges without thinking about codomains first; indeed, you can't conceive of a function uniquely without also specifiying its codomain, among other requirements. In your second paragraph as quoted above, the question of injectivity in the most general sense depends only on injectivity, but in practise it's easier to single out surjective functions that are also injective; this automatically guarantees their bijection in an explicit manner, ready for use. This however doesn't mean that only surjective functions can be possibly bijective, except you take the preceding statement as a definition, which is not a problem anyway.
A: If you are given one function $f$, it is indeed true that asserting that it is surjective is equivalent to asserting that its image is equal to its codomain. But suppose that you have several functions. Then asserting that some of them are surjective whereas others are not becomes more natural, since it is not natural to restrict the codomain of some of them and not to restrict the codomain of the other ones.
A: One practical reason for allowing larger co-domains is that finding the range explicitly is not easy.
For example, how would you describe the range of the function $\mathbb R \to \mathbb R$ given by  $f(x) = x^6 − 3x^2 − 6x$ ? It's derivative is an unsolvable quintic.
