How context switch actually happens?
There are two ways we can switch from process A to process B -
1. Cooperative way where the currently running process invokes a system call by it's own choice or does something illegal that generates a trap and OS takes control.
2. Non cooperative way where HW helps the OS to take control by generating a interrupt (usally a timer interrupt).
We will dive deeper into the non cooperative way as it also talks about the steps taken in the cooperative way
Steps -
Suppose a process A is running and a timer interrupt occurs.
1. The user registers — program counter, stack pointer, and status register — of process A are then implicitly saved by the CPU onto the kernel stack of A.
2. Then, the hardware switches to kernel mode and jumps into interrupt handler for the operating system to take over.
3. Then the operating system calls the switch() routine to save A's current kernel registers into the PCB of A, restores kernel registers from the PCB of process B, and switches context, that is, changes kernel stack pointer to point to the kernel stack of process B.
4. The operating system then returns from interrupt. The hardware then loads user registers from B's kernel stack, switches to user mode, and starts running process B from B's program counter.
In case of cooperative way, we just perform the steps when the OS calls the switch() routine as there is no HW interrupt. Also the OS will save the user register content in that case to the PCB or the kernel stack depending on the OS.
References -
https://en.wikipedia.org/wiki/Context_switch
https://stackoverflow.com/questions/67955845/during-a-context-switch-does-the-os-use-pcb-or-kernel-stack-to-restore-register ( Has a beautiful diagram :) )
OS: Three easy pieces pg. no. 7-12
Hence, Option A is correct. We will save register values.
In case of address translation table (Here the assumption is that we are using Paging + segmentation),

The above excerpt points tot the fact that we need to change the base register values which in basically pointing to different address translation table. Hence B is correct.
With reference to TLB,

However, flushing TLB leads to initial TLB hit miss the next process even in case where the previous process shared some of the address space with the current running process.
To tackle this problem we can use ASID (Address space identifier) that identifies address spaces and are stored in the page tables.
So, pages having same ASID in previous and current processes can still be valid even after context switch.
But, I don't think the ASID argument in valid in context of the question, because we still need to invalidate TLB entries which are not common.
Hence, Option D is also correct.
Now coming to Option C, A process is moved to the disk (swapping) when there is no enough memory in the physical main memory. It is not necessary that this should happen during context switching. It could happen when the process is in blocked state or ready state. Hence, C is false.