No. Files are not always stored continuously; discontinuous storage actually has a name, "fragmentation" (because each separately stored portion of the file is a "fragment"). This is required, because otherwise you'd not be able to make a file larger than the largest contiguous free space. And appending to files would often fail (or, alternatively, require rewriting the entire file to move it).
The inode has fields to say "bytes 0 through 1048575 start at block 10,000", "bytes 1048576 through 2097152 start at block 300", etc. An inode is a fixed size, so there is a limit to the number of fragments that can be stored in the inode. When more fragments are required, the inode stores a pointer to a different block; the fragments are stored there.
If the fragment is directly pointed to by the inode, that's a direct pointer.
If the fragment is stored outside the inode, that's an indirect pointer.
A digital forensics article at SANS has a nice picture explaining. So does the Wikipedia article. Note that ext4's extents work differently; again an article at SANS.