First I will thank you to contact with National Instrument.
I hope that you can use the examples which are in the Example Finder (see screenshot). There you can find that if you have a finite amount of data it is better to start the task and then read. For your second question I need more info what you exactly wants to do.
It sounds like you are using DAQmx 8.0.x for Linux. To answer your first question, no, DAQmxStartTask is not needed. DAQmxRead will implicitly start the task if it is not already running. If you set the "number of samples per channel" for DAQmxRead to be the number of samples for your finite task, every time you execute the DAQmxRead your task will run once.
You can improve performace by setting the task state to commit right after all the task configuration is done, but before doing the first DAQmxStartTask or DAQmxRead call. By doing this, much of the hardware configuration pushed to the hardware so that it does not need to be done every time DAQmxStartTask or DAQmxRead is called. You can set this by using this function definition:
Steven K. National Instruments DAQ Software Engineer