Macros in a node name are merely expanded, but not parsed by a math parser. You need to do this yourself, either by using an explicit command like Marco suggested in his answer, or by using the [evaluate = <variable> as <new macro> using <expression>] option of the \foreach statement. Note that you want to use the int(...) function to make sure the result does not have a trailing .0 (otherwise your new nodes would be called N-3.0 and N-4.0):
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node (N-1) at (1,1) {N-1};
\node (N-2) at (2,-1) {N-2};
\foreach \y [evaluate = \y as \ypp using int(\y+2)] in {1,2}
\node[right of=N-\y] (N-\ypp) {N-\ypp};
\end{tikzpicture}
\end{document}
This also works if you're looping over more than one variable simultaneously:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node [text=gray] (N-1) at (1,1) {N-1};
\foreach \x/\y [evaluate = \x as \ypp using int(\y+\x)] in {1/2,3/4}
\node[right of=N-\x] (N-\ypp) {N-\ypp};
\end{tikzpicture}
\end{document}
