Disclaimer: This answer is based on the book Artificial Intelligence for Games by Millington and Funge. You should take a look at it for details, and implementations notes at AI4G.com and it's aimed to give readers the general idea trying to avoid copyright infringement.
I'm going to answer in reverse order because I think that's the level of difficulty.
Q3: This is called Seek behavior.
Vector3 character, target;
float maxSpeed;
character.velocity = target.position - character.position;
character.velocity.normalize();
character.velocity *= maxSpeed;
if (velocity.lenght() > 0)
character.orientation = atan2(-character.velocity.x, character.velocity.z);
Q2: This is called Wander behavior.
float randomBinomial () {
return random() - random();
}
Vector3 character;
float maxSpeed, maxRotation;
// this is the vector that indicates to where you are looking at
// sometimes it is similar to where you are going (velocity), but not necessarily
character.velocity = maxSpeed * character.orientation.asVector();
// rotation is the speed at which you change the orientation per frame
character.rotation = randomBinomial() * maxRotation;
It's important to note that if Wander behavior is not exactly what you're trying to achieve (because you want to be always inside the area), the best option I can offer is to apply the Seek behavior to a random target in the circumference. Once you reach the target (or are pretty close to it), generate a new point. This way you can monitor a given area and avoid getting similar random points inside the circle.
EDIT: You can checkout my implementations of some of those behaviors in XNA here. They are in the GLaDOS class. However, you can checkout the code from the book and translate it from C++ into C# with almost no problem at all. A little bit of patience :)
Q1:
This one is a bit tricky and could be solved differently. You can shoot several rays to where you are looking at given a threshold (cone aperture), ray distance and number of rays (one per degree, maybe). If the ray hits the target, apply seek behavior.
A cheaper way is to shoot the ray and, given the threshold, you check collision detection inside the area of the rectangle (is not that precise, but gives the same idea).
Finally, you can shoot the ray and create two triangles. If the object collides with either one of them, that's it.

EDIT: 3D collision detection is well covered in Stack Overflow here and here. They helped a friend of mine last year.