Bearing is regularly defined as the direction (relative to true north) in which your destination lies. If you could go in a straight line to your destination, this would be the most direct way of getting there.
You also have relative bearing, where the front of the vehicle is considered "north"; you'll see this when pilots claim, for example, that something is "at your 3 o'clock"; in naval terminology, port and starboard are always relative to the bow.
Heading is the direction your face/nose/front/bow is currently pointing at (relative to true north), assuming default movement by your vehicle's impulse mechanism is forward. If there are no obstacles between you and your destination, and nothing aside from your vehicle's own impulse mechanism is moving it, heading should always be equal to bearing.
Course describes the entire planned route to get to your destination. A course correction implies that your planned route encountered an obstacle, and that you have to correct that plan.
As an example, let's assume a car is the vehicle, and it's navigating in a standard grid-like street structure. If you're at point (0, 0) with your car facing north and your destination is at (3, 3), your course would be "Three blocks north, then three blocks west". Your bearing at the start of your journey would be north-west, and your heading would be north, since that's the way your car is facing.
After you travel three blocks north, you're stopped at a red light. You should plan to turn right, to change your heading to west, since your bearing is now west. Your remaining course is "3 blocks west".
In aviation, where winds can and often will push you off-course, heading is rarely equal to bearing when the total travel distance is large. This makes for frequent course corrections to account for wind.
In my opinion, direction is the most basic term of all, and describes a directed vector between two points.
For your example, it seems like the proper phrasing would be "We are heading north, but we're being pushed off-course eastwards."