Your second problem has an efficient answer. In particular, after preprocessing, each query can be answered in at most $O(d^2)$ time. This will be a big performance gain if $d \ll n$.
Let's start by considering the variant where we want to test whether $S=\{s_1,\dots,s_n\}$ contains a vector that is non-orthogonal to $x$. The answer will be "No" exactly if $s_i \cdot x = 0$ for all $i$. Form the $n\times d$ matrix $M$ whose $i$th row is $s_i$; then the answer to the query will be "No" exactly if $Mx=0$. Notice that we can form a new matrix $M'$ containing at most $d$ rows, such that $Mx=0$ if and only if $M'x=0$. (In particular, consider the subspace of $\mathbb{F}_2^d$ spanned by $s_1,s_2,\dots,s_n$; let $t_1,\dots,t_{n'}$ be a basis for this space, and define $M'$ to be a $n' \times d$ matrix whose $i$th row is $t_i$.) In a preprocessing step, we can compute the matrix $M'$. To answer each query $x$, we can simply compute $M'x$; if $M'x=0$, then answer "No", otherwise answer "Yes". The running time to answer the query is the time to multiply a $n' \times d$ matrix by a $d$-vector, where $n' \le d$; this is at most $O(n'd) = O(d^2)$.
What about the original version of the problem, where we are given a vector and we want to decide whether $S$ contains a vector that is orthogonal to $x$? Well, we can solve this with a very similar strategy. Define $S'=\{s'_1,\dots,s'_n\} \subseteq \mathbb{F}_2^{d+1}$ where $s'_i = (s_i,1)$, and define $x'= (x,1)$ (extend each vector by adding a single 1 to the end). Now notice that $s_i \cdot x = 1$ if and only if $s'_i \cdot x' = 0$. Therefore, $S$ contains a vector that is orthogonal to $x$ if and only if $S'$ contains a vector that is non-orthogonal to $x'$. Therefore, we can preprocess the set $S'$ using the technique of the previous paragraph, then test whether $S'$ contains a vector that is non-orthogonal to $x$. This increases the dimension from $d$ to $d+1$, so the running time to answer each query is $O((d+1)^2) = O(d^2)$.
I doubt that your first problem will have any general solution that is much more efficient than the naive approach of testing $x$ against each element of $S$, one by one. The naive approach has running time $\Theta(nd)$. If $x$ and each element of $S$ are distributed uniformly at random, then you'd expect about $n/2$ elements of $S$ to be orthogonal to $x$, so there doesn't seem to be much room for hope for a general solution whose running time is asymptotically better than $d \times n/2 = \Theta(nd)$.
If you know something about the distribution on your vectors or if they have some structure, perhaps one could do something better in that specific setting -- but I wouldn't expect to see a generally applicable algorithm that doesn't make use of that kind of additional information.