I'm going to explain as much as I can to avoid more questions.
Let's begin from the simple linear motion. It's something like:
X = X + cos(angle)* distance * deltaTime;
Y = Y + sin(angle)* distance * deltaTime;
First of all, we're using trigonometry to find out how much we should move an object at the specific coordinate using Sin and Cos functions to convert it from the angle. Think of it as converting angle to a unit vector by finding projections to each coordinate axis.

Then we're multiplying the result to the distance to move from the origin (speed of the movement, actually) and multiplying to the time that got past from the previous frame to make movement independent from the framerate. Note that this action makes everything being measured in units-per-second.
Last thing to explain is the angle, but I think Unity has methods to calculate angle between two points so it shouldn't be a problem.
Well, we got it moving to the desired point, what's next?
Let's modify the angle, here's how to do it:
X = X + cos(angle + sin(Time*speed)*amplitude)* distance * deltaTime;
Y = Y + sin(angle + sin(Time*speed)*amplitude)* distance * deltaTime;
This will make your object move to the desired point with a wavy behaviour, but note that speed will decrease amplitude because we're just rotating the angle and too big amplitude will make the object stay spinning at the same position being unable to move.
This is what the resulting pattern looks like:

It is also able to home to your target:
