Timeline view auto-schedules tasks based on their dependencies and durations, and dragging one task's bar shifts everything that depends on it, the same core mechanic you'd expect from a dedicated project-scheduling tool. Milestones mark a specific date (a launch, a deadline) as a zero-duration marker on the same chart, distinct from a regular task.
Dependencies and timeline dates are both regular task properties, meaning they're fully readable and writable through Asana's API, so building or updating a schedule programmatically, during a bulk migration, say, is genuinely possible without any workaround.
Calendar view is the simpler sibling: it shows tasks by due date without dependency logic, useful for a team that wants a straightforward monthly view rather than a full project schedule.