It's helpful to understand that the DAQmx Task is a parallel process running in a different state from your VI (it runs partly in your computer and partly in the device hardware, but it's basically a "black box").
The DAQmx calls simply configure this task. When the task starts recording samples, they go into a buffer which is read by DAQmx Read. If your DAQmx Read call specifies -1 samples, it reads the whole buffer (if it's empty, it reads 0 elements). If your DAQmx Read call specifies 10 samples, and there are 100 samples in the buffer, it returns immediately with 10 samples. If it specifies 100 samples and there are just 10 in the buffer, it waits until there are 100 samples in the buffer, then returns them (or if the Timeout value is reached first, then it returns everything it can, and gives a Timeout error).
Don't forget- you have to wire the DAQmx Read function with the number of samples to pull from the buffer. DAQmx Timing just configures the buffer*, so you will need to wire values to both Timing and Read to get this to work.
*DAQmx Timing is a little weird about how it configures the buffer- for Finite tasks, it makes a buffer of the size you specify, but for Continuous tasks, it makes a buffer "kind of" the size you specify. It's not super important to understand most of the time, but the Help file describes it pretty well. For now, just use the actual value you want to read when doing Finite acquisitions, and use maybe 200ms worth of data for Continuous reads. If it works, great, if not, you can increase the buffer size a bit.