The simplest way to search the whole Bible, ignoring the newlines, is to read the whole file into one string and replace the newlines with spaces.
import re
with open("bible.txt") as data:
bible = data.read().replace('\n', ' ')
You're then going to run into some issues with your regular expression, primarily the fact that ^ matches only at the very beginning of the string, and .* is greedy, meaning it will gobble up as much as possible; in this case it would match the whole Bible instead of just the first sentence. The non-greedy version is .*?. You can also replace [0-9] with the shorted \d, and use {1,2} to specify that you want to match either one or two digits. With that, your code would look like this:
import re
with open("bible.txt") as data:
bible = data.read().replace('\n', ' ')
sentences = re.findall(r"(\d{1,2}:\d{1,2}.*?\.)", bible)
# Print only the first twenty sentences, since there will be a LOT of
# them.
print(sentences[:10])
Now, you are going to have some other corner cases to think about as you work on this assignment; here are some of them I foresee. I see you're using the NKJV translation, so I'll quote from that as well.
What about sentences that end in something other than a period, for example a quotation mark, exclamation mark, or question mark?
Luke 1:25 "But behold, you will be mute and not able to speak until the day these things take place, because you did not believe my words which will be fulfilled in their own time."
What happens when you encounter a verse that contains more than one sentence?
Matthew 9:9 As Jesus passed on from there, He saw a man named Matthew sitting at the tax office. And He said to him, "Follow Me." So he arose and followed Him.
What about a single sentence that spans multiple verses?
John 2:24 But Jesus did not commit Himself to them, because He knew all men, 25 and had no need that anyone should testify of man, for He knew what was in man.