Effort driven and non-effort driven tasks use the same w=d*e formula.
Effort driven and non-effort driven setting come in to play when you ass or
remove bodies from the task - if the task is effort driven adding a body
will reduce the duration while with non-effort driven tasks it will not.
Example: I have a painter who will paint a room. It's a big room and it
will take him 5 days to do it by himself. I add another painter. Now one
guy can work on the east wall while the other the other does the west. As a
result, we get the room done in half the time or 2.5 days. The total work
is still 40 hours but now it's split 20/20 between the two resources.
Effort driven scheduling. Second example: I have a painter assigned to
paint a room and it's estimated that it will take him 5 days. We're going
over the schedule and he says "Where's my assistant, the union rules say I
have to have an assistant with me and when I told you 5 days I assumed you
knew he'd be working with me." So I have to add the assistant so his time
and pay are included in the budget. But should the duration shrink when I
correct my mistake? Nope! So I make the task non-effort driven and add
him. Now the duration remains constant, but the total work we're paying for
goes from 40 hours to 80 hours.
Task type is something totally different. That one kicks in when I increase
or decrease a resource's involvement in the task, or the work required for
the task, or the estimated duration of the task. The mathematical identity
Work = Duration * Effort is always true and cannot be violated under any
circumstance. But as in any linear equation, I can arbitrarily choose any
single term as the constant, change either of the two remaining terms as I
wish as the independent variable, and Project will calculate the third term
as the dependent variable.