In that example it would go like this (keeping this high level so you can see the systems involved):
Find if there is something to pick up. You can trace from camera or character. You could use a radius check or overlapping check. Whatever fits the bill.
Once you have found an object you play the pick up animation. The animation has an animNotify for when it is in the pickup part of the anim
When the animNotify fires you attach the pot to the proper bone/socket in the skeleton. The bone is animated to make sure the pot looks correct or you have some animBP code for keeping it oriented.
When you drop the pot you play the drop anim (may be the same as the pick up honestly) and the animNotify triggers
Use this notify to detach the pot. You will have to figure out where to drop it. This could just be a trace from a little in front of the character to the ground to find a good place. You’ll need code to verify it is a valid location for a pot though, so it doesn’t place in things or through walls/etc.
The input part would be handled by capturing E (or better yet, add an input tied to E in the input ActionMapping) checking if you are already carrying something and then calling you pick up or put down based on that result.