Эта запись в блоге MSDN может быть информативной по первой части вопроса. Краткая выдержка:
Рабочий набор - это подмножество виртуальных страниц, которые находятся только в физической памяти; это будет частичное количество страниц из этого процесса.
Как обсуждалось в статье, часть о частном и не частном имеет отношение к памяти, используемой процессом, которая может использоваться другими процессами. Если вы не можете разделить память (возможно, память используется образом DLL, который нужно было переместить в память), он становится приватным. Память кучи также всегда будет закрытой.
Причина, по которой вы видите резкое падение памяти при сворачивании программы, заключается в том, что Windows автоматически обрезает рабочий набор процесса всякий раз, когда его главное окно свернуто. См. эту статью Microsoft KB для получения дополнительной информации, включая инструкции о том, как сделать это самостоятельно.
Память выгружаемого пула и памяти невыгружаемого пула относится к памяти ядра, используемой процессом. Память из выгружаемого пула может быть выгружена (удалена из физической памяти при увеличении нагрузки на память). Память из невыгружаемого пула всегда будет оставаться в физической памяти, поэтому обычно для этого предпочтительно оставаться маленьким. Если вы не пишете драйверы устройств, то, как разработчик приложений пользовательского режима, вам, как правило, не нужно беспокоиться об этих двух элементах.