Pick ray

You can implement a picking ray in very different ways.

For OptiX 6 and before:
You could implement this as special case in your standard rendering launch entry point. Means you would need to change the ray generation programs and closest hit programs to toggle between rendering and picking and calculate the primary rays accordingly and return the required rendering or picking information.

You could even handle picking always when rendering. You would only need a pixel position (reps. launch index) for which the primary ray would determine hit event information and write them to the picking buffer.

The point is that you need to be able to calculate the primary ray for the picking and if you launch only one cell with an 1x1 launch you need to provide he necessary information to do that calculation inside the ray generation program.
You could even calculate that on the host and put the picking ray origin and direction into context variables.
(Better put all context gobal variables into an input buffer. Updating buffers has better performance than changing variables between launches in Optix 6. Or just use OptiX 7 which enforces this.)

And in general, can application have multiple launches of the same context? If yes, how do multiple launches interoperate with each other, or interfere?

There cannot be multiple rtContextLaunch calls active at the same time in an OptiX context, if you meant that.
But you can have separate ray generation entry points, means different ray generation programs like one for rendering and one for picking. The first argument in the rtContextLaunch call allows to switch between them.

That picking is active could be communicated to the per ray type closest hit programs via some flag on the per ray payload, then you wouldn’t need a separate ray type and additional hit programs.

Or you could write all hit events for all launch indices into some full resolution picking buffer and simply read from that, which doesn’t need updates as long as the camera is not moving.

For OptiX 7:
All of the algorithmic and device side methods apply the same way.
The only difference is that the ray generation entry point is switched by using different shader binding tables.
See here: https://forums.developer.nvidia.com/t/multiple-raygen-functions-within-same-pipeline-in-optix-7/122305

I would recommend using OptiX 7 for new projects.