Why might Sql Server Agent's Next Run Time value not be what I expect? And is this definitely the next time my job will run?
When did you check this data?  The msdb.dbo.sysjobschedules table refreshes every 20 minutes.  So if you had it set and then changed it, then ran the sp_help_jobschedule stored procedure, the underlying data might not be updated yet.

What do you get for next_scheduled_run_date when you execute this query?

exec sp_help_jobactivity @job_name = 'YourJobScheduleName'