I believe that SAF format use 1-based coordinates that are closed on both ends. Here is how I got this conclusion.
First make some toy data.
$ cat genome.fa
>chr1
AATTCCGGAAAATTTTCCCCGGGGAAAAAAAAAAAAAAAAAACCCCCCCCCCCCCCCCCCCCCCCCCCCC
$ cat reads.fa
>q1
AAAATTTTCCCCGGGGAAAAAAAAAAAAAAAAAACC
Map reads to the genome:
$ STAR --runMode genomeGenerate --genomeDir test_star --genomeFastaFiles genome.fa --genomeSAindexNbases 2
$ STAR --genomeDir test_star --readFilesIn reads.fa --outFileNamePrefix reads_
$ cat reads_Aligned.out.sam
@HD VN:1.4
@SQ SN:chr1 LN:70
@PG ID:STAR PN:STAR VN:2.7.10a CL:STAR --genomeDir test_star --readFilesIn reads.fa --outFileNamePrefix reads_
@CO user command line: STAR --genomeDir test_star --readFilesIn reads.fa --outFileNamePrefix reads_
q1 0 chr1 9 255 36M * 0 0 AAAATTTTCCCCGGGGAAAAAAAAAAAAAAAAAACC * NH:i:1 HI:i:1 AS:i:35 nM:i:0
The read was mapped to 9-44 nucleotides of chr1:
$ bedtools bamtobed -i reads_Aligned.out.sam
chr1 8 44 q1 255 +
Now we test whether several SAF intervals have overlapping reads.
$ featureCounts -s1 -a f1.saf -F SAF -o cnts1.txt reads_Aligned.out.sam
$ featureCounts -s1 -a f2.saf -F SAF -o cnts2.txt reads_Aligned.out.sam
$ featureCounts -s1 -a f3.saf -F SAF -o cnts3.txt reads_Aligned.out.sam
$ featureCounts -s1 -a f4.saf -F SAF -o cnts4.txt reads_Aligned.out.sam
$ cat f1.saf cnts1.txt
r1 chr1 5 8 +
# Program:featureCounts v2.0.1; Command:"featureCounts" "-s1" "-a" "f1.saf" "-F" "SAF" "-o" "cnts1.txt" "reads_Aligned.out.sam"
Geneid Chr Start End Strand Length reads_Aligned.out.sam
r1 chr1 5 8 + 4 0
$ cat f2.saf cnts2.txt
r1 chr1 5 9 +
# Program:featureCounts v2.0.1; Command:"featureCounts" "-s1" "-a" "f2.saf" "-F" "SAF" "-o" "cnts2.txt" "reads_Aligned.out.sam"
Geneid Chr Start End Strand Length reads_Aligned.out.sam
r1 chr1 5 9 + 5 1
$ cat f3.saf cnts3.txt
r1 chr1 44 50 +
# Program:featureCounts v2.0.1; Command:"featureCounts" "-s1" "-a" "f3.saf" "-F" "SAF" "-o" "cnts3.txt" "reads_Aligned.out.sam"
Geneid Chr Start End Strand Length reads_Aligned.out.sam
r1 chr1 44 50 + 7 1
$ cat f4.saf cnts4.txt
r1 chr1 45 50 +
# Program:featureCounts v2.0.1; Command:"featureCounts" "-s1" "-a" "f4.saf" "-F" "SAF" "-o" "cnts4.txt" "reads_Aligned.out.sam"
Geneid Chr Start End Strand Length reads_Aligned.out.sam
r1 chr1 45 50 + 6 0
We can see that the SAF 5-9 and SAF 44-50 have overlapping reads while SAF 5-8 and SAF 45-50 not. Therefore, the start and end in SAF are both 1-based and inclusive as in GTF format. Therefore, when converting bed to SAF, the bed start coordinates should plus 1 and bed end coordinates need no change.