I understand that the notions of injective/surjective do not make much sense in arbitrary categories. I am especially interested in the case where they make sense and are defined in the set-theoretic sense.
For simplicity let's just think this question through in $\mathcal{Set}$. I think I found an argument why the statement would hold there.
Assume we have two objects $A,B \in \mathcal{Set}$ and an injective function $i: A\to B$. Because $i$ is injective, there will be a surjective function $j: B\to A$, such that $j\circ i = 1$. If we now apply a functor $F:\mathcal{Set}\to\mathcal{Set}$ on the sequence $$A\to_i B \to_j A,$$ the sequence $$ F(A)\to_{F(i)} F(B) \to_{F(j)} F(A)$$ will yield the identity from $F(A) \to F(A)$ because functors preserve the identity. Then, $F(i)$ has a leftinverse and is injective. Thus, functors in $\mathcal{Set}$ preserve injectivity. We can argue analogously to obtain the statement: Functors in $\mathcal{Set}$ preserve surjectivity.
Are the above argument and the conclusion correct?
If they are correct, what other set-like categories exist in which this argument works?
As others have noted, what your argument shows is that split monomorphisms (those with left inverses) are preserved by all functors. In $\mathsf{Set}$, a function $A\to B$ is a split monomorphism if and only if it is an injective function and if $A$ is empty; then $B$ is empty. So your proof is not quite right, because it assumes every injective function is a split monomorphism - you've neglected to handle the case when $A$ is empty and $B$ is non-empty - and in fact, there are counterexamples to the claim.
Consider the functor $F\colon\mathsf{Set}\to\mathsf{Set}$ which adds a new element to every non-empty set and adds two new elements to the empty set:
$$F(A)=\begin{cases} A\cup \{*_A\}&\text{if }A\neq\varnothing\\ \{*_\varnothing, *_\varnothing'\}&\text{if }A=\varnothing\end{cases}$$
To define the action of $F$ on morphisms, let $f\colon A\to B$ be a function. If $A$ is non-empty, $F(f)$ sends $a\in A$ to $f(a)\in B$ and sends $*_A$ to $*_B$. If $A$ and $B$ are both empty, then $f$ is the identity function on $\varnothing$, and $F(f)$ is the identity function on $F(\varnothing)$. If $A$ is empty and $B$ is non-empty, then $F(f)$ sends both $*_\varnothing$ and $*_\varnothing'$ to $*_B$. Note that in this last case, $f$ is injective, but $F(f)$ is not injective.