Thanks for waiting for a response to your queries.
The Programmers Guide provides some guidance to your queries:http://www.picotech.com/document/pdf/PS3000-en-3.pdf
With respect to the get_timebase function, step 4 in section 18.104.22.168 (Using block mode) states that timebases are selected until the required ns per samples is achieved - you will probably need to run the call through a while loop to keep incrementing the timebase and checking the outputs from the function for the time interval and units until you achieve the desired sampling interval as per the C code example in the SDK. The function will return 1 if all the parameters are in range so you can use this as a check.
As per the Programmer's guide 'Timebase 0 is the fastest timebase, timebase 1 is twice the time per sample of timebase 0, timebase 2 is four times, etc.'. Which device are you using - the maximum sampling rate does vary across the old 3000 series range.
With regards to the second question in relation to the buffers, a channel will only be active if the ps3000_set_channel function has been called with the channel set to enabled. In the description of the ps3000_get_values, the arguments section states 'A pointer is unused if the oscilloscope is not collecting data from that channel. If a pointer is NULL, nothing will be written to it.'. There is no harm in setting a buffer to the channel as it won't be used unless the channel is activated.
I hope this provides sufficient clarification, but please respond to this post if you require any further information.