Pullback commutes with dual for locally free sheaf of finite rank
For these kinds of questions, if you can see how to establish an isomorphism stalkwise, the key thing you need to do to promote this to a complete proof is to construct a morphism between the sheaves that you are trying to prove are isomorphic.
Once you have a morphism, in order to check that it is an isomorphism, you can work on stalks; and then hopefully the induced morphism equals to isomorphism you've already constructed. (If what you've done is sufficiently natural, then this should work out). In this particular case, there's likely an argument that avoids working with stalks altogether, but since you've already thought about them, it makes sense to incorporate them into your argument; and in any case, the strategy I'm suggesting is a very common one.
So, you want a natural morphism $f^*(\mathscr E^{\vee}) \to (f^*\mathscr E)^{\vee}$ (intuiting the correct direction in which to construct the desired morphism is one of the subtleties of this proof strategy, but can normally done by a bit of trial-and-error).
That is, we need a pairing $$f^*(\mathscr E^{\vee}) \times f^*\mathscr E \to \mathscr O_X,$$ or equivalently a morphism $$f^*(\mathscr E^{\vee}) \otimes_{\mathcal O_X} f^*\mathscr E \to \mathscr O_X.$$ (Judicious unwinding of definitions, as in this case, where I've unwound the definition of $(f^*\mathscr E)^{\vee})$, is also a typical aspect of such an argument.)
But just using properties of pull-backs and tensor products, you can see that there is a canonical isomorphism $$f^*\mathscr E^{\vee}\otimes_{\mathscr O_X} f^*\mathscr E \cong f^*(\mathscr E^{\vee} \otimes_{\mathscr O_Y} \mathscr E).$$ So the desired morphism can be obtained by pulling back the canonical morphism $$\mathscr E^{\vee} \otimes_{\mathscr O_Y} \mathscr E \to \mathscr O_Y$$ via $f$.
Now that you have a morphism from $f^*(\mathscr E^{\vee})$ to $(f^*\mathscr E)^{\vee}$, you can pass to stalks to check it is an isomorphism. But on stalks, it will surely agree with the isomorphism you've already discovered (since this is the only natural isomorphism in this context).
$\def\H{{\mathcal{Hom}}}$This follows from this question where it is proved that if $E$ and $F$ are locally free of finite rank then there is a natural isomorphism
$$ f^*\H_Y(E,F) \to \H_X(f^*E,f^*F). $$
In your particular case we have $F = \mathcal{O}_Y$. Then $\H_Y(E,\mathcal{O}_Y) = E^\vee$ and $f^*\mathcal{O}_Y = \mathcal{O}_X$ so we get that
$$ f^*(E^\vee) \cong \H_X(f^*E,\mathcal{O}_X) = (f^*E)^\vee. $$
I know this question has been answered satisfactorily, but let me provide a different argument.
This is certainly less clever than the argument that was provided by tracing, but it has the benefit of being very concrete. It has the disadvantage of not providing a coordinate free map - instead I am just showing that the standard explicit constructions for both the pullback functor and the functor $Hom(\_, O_X)$ commute.
First, how does one describe a locally free sheaf of rank $n$? We can do it by giving a collection of open sets $U_{a}$, for $a \in A$, along with transition matrices $t_{ab} \in GL_n( O_X(U_{ab}))$ satisfying the usual cocycle conditions $(t_{ab} t_{bc} = t_{ac}$ on triple overlaps, and $t_{aa} = id$). (Here $U_{ab} := U_a \cap U_b$.)
To answer your question, we just need to understand how to pass from this data to a similar description of the dual bundle, or to a description of the pullback bundle. Your question then asks - do these two transformations commute, i.e. do the two orders of applying them give isomorphic data?
Since in this case both operations are relatively concrete, we can write down formulas for these operations, and check computationally the commutativity.
Dual:
Given the covering data $(U_a,t_{ab})$ describing $E$, what is the covering data describing $E^*$?
If $E_{U_a} \cong O_{U_a}$, then also $E^*_{U_a} \cong O_{U_a}$. So we can take the same open sets.
What about the transition functions?
A standard excise shows that they are $(t_{ab}^{-1})^T$.
Here is some intuition and proof for this.
Let $f_i, f_j$ be two trivializations $O_U^n \to E$ over some open set $U = U_i = U_j$. Then transition map over $U_i$ to $U_j$ is given by $f_j^{-1} \circ f_i$. What happens to a section of $E$, $s \in E^*(U)$. We can pull it back to the ith trivialization to get $s \circ f_i$, and we pull it back to the $j$th trivialization to get $s \circ f_j$. The transition from $U_i$ to $U_j$ is now pulling back along $f_i^{-1} \circ f_j$, which is the pullback along the inverse of the original transition function. (There is a unique linear map that will accomplish this transition, and this one works. You can also chase basis around to say this.)
Pullback:
Here the open sets are going to be $f^{-1}(U_a)$, and the transition functions are just the pullbacks of the matrices - i.e. the matrix filled with the pullback of the entries. A bunch of tiny facts come together here - pullback commutes with direct sums, pullback takes the structure sheaf to the structure sheaf, pullback on functions is the original map on sheaves in the definition of morphism of ringed space...
--
To check that these two processes commute, let $A \in GL_n(O_X)$. Then we have to check that $((f^*A)^{-1})^T = f^* ((A^{-1})^T)$.
(The question of equality makes sense - both of these are $n \times n$ matrices with entries in $O_Y$.)
But $f^*$ on the level of elements is a ring homomorphism, so it commutes with the $det$ function, and also multiplicative inversion, so in particular it commutes with inverting matrices, and it also commutes with taking the transpose.
--
So, finally we know that both vector bundles are trivialized over the same open sets, with the same transition functions between them. Hence they are literally equal, at least if we started with this particular description of $E$ on $X$, or at any rate we have established the isomorphism.
Thus we have proven something about moving parenthesis around: $f^*(E^*) = (f^* E)^*$!
Hope that is helpful! It helped me.