Are you wanting full flight? If so, the post I made earlier showing the quaternion camera is a good place to start.
I use something like this:
D3DXQUATERNION rot;
D3DXQuaternionRotationYawPitchRoll(&rot, yaw, pitch, roll);//these values change when turning. other than that, they are usually 0
D3DXQuaternionMultiply(&m_orientation, &m_orientation, &rot);
D3DXQuaternionNormalize(&m_orientation, &m_orientation);
D3DXMatrixRotationQuaternion(&m_viewMatrix, &m_orientation);
m_viewMatrix(3,0) =0;//this is so my camera is stationary
m_viewMatrix(3,1) =0;//I have a stationary camera because of the type of game I use this in
m_viewMatrix(3,2) =0;//you would most likely put your coordinates here for your game.....
D3DXMatrixInverse(&RotationMatrix,0,&m_viewMatrix);//for flight
m_viewDir = D3DXVECTOR3(0,0,1);
D3DXVec3TransformCoord(&m_viewDir,&m_viewDir,&RotationMatrix);//this is to keep track of the view direction.
//put RotationMatrix in as your view matrix
camData->matView =RotationMatrix ;
Any code examples you find (and they are hard to find), will be confusing, but this is about as simplified as I can make it. There's not a lot to the actual "math" part.....
Making another object "point at" a location is another part. You would have to do something like this:
D3DXQUATERNION rot;
float heading=0,pitch=0,roll=0;
float MagAngleToTarget=D3DXVec3Length(&(TargetHeading-Heading));
D3DXQUATERNION tQ;
D3DXMATRIX la;
D3DXVECTOR3 Up(0,1,0);
D3DXMatrixLookAtLH(&la,&D3DXVECTOR3(0,0,0),&TargetHeading,&Up);
D3DXQuaternionRotationMatrix(&tQ,&la);
float Turn=MagAngleToTarget/50.0f;
if (Turn>ShipType[Type].MaxTurnRate) Turn=ShipType[Type].MaxTurnRate;
D3DXQuaternionSlerp(&RotQuat,&RotQuat,&tQ,Turn);
D3DXMatrixRotationQuaternion(&RotationMatrix, &RotQuat);
RotationMatrix(3,0) =0;
RotationMatrix(3,1) =0;
RotationMatrix(3,2) =0;
D3DXMatrixInverse(&RotationMatrix,0,&RotationMatrix);//for flight
Once again, the RotationMatrix would be applied to the object's matrix.
The fastest code is the code never written.