Yes, this is correct... pytest_generate_tests
is a hook used by py.test during collection phase, which in turn is executed by each slave in order to obtain the tests to execute ("test items"). Which slave executes which test item is than handled by the process that started the test session.
I have not studied all internals fully yet, but I think one of the reasons for this is that you can't send a test item from one process to another because they are not serializable. So the approach is for every slave to do the collection themselves in order to obtain the test items and their "test ids", which then can be exchanged between processes as means of communication, both which slave should execute each test as well as reporting test results back.