I don't know if I understand your questions, but anyway...
#pragma omp parallel for num_threads(N)
for(int i=0; i<N; i++)
whenever the number of threads will be equal to N?
There is a rather complex (from my point of view, of course) algorithm given in section 2.4.1 of the Spec. (3.1) for "Determining the Number of Threads for a parallel Region" but in every compiler I've used I've seen that code as you post will generate N threads. If in doubt, you can use omp_get_num_threads() to get the actual number of threads in the current team.
There is a limit of number of threads?
Yes, it is given by the icv (internal control variable) thread-limit-var that can be modified by OMP_THREAD_LIMIT and (its value) retrieved by omp_get_thread_limit(), as described in section 2.3.2.