Is there an algorithm to find all connected sub-graphs of size K?
There can be exponentially many such subgraphs, so any such algorithm will necessarily be slow.

To enumerate all of them, choose any number $i$ in the range $[1,k]$, choose any subset $S$ of $i$ of the vertices, discard all edges that have an endpoint not in $S$, choose any subset of the remaining edges, then check if the graph with vertex set $S$ and the chosen edge subset is connected; if not, discard the graph; if yes, output the subgraph.  If you implement each "choose" with an for-loop that enumerates over all possibilities, this will enumerate over all graphs.  There are standard ways to enumerate all subsets of a set.

You can make it a bit more efficient by choosing the edges in a particular order:


for each $i \in [1,k]$:


for each subset $S$ of exactly $i$ of the vertices: (*)


let $E_1 = \{(u,v) \in E : u \in S, v \in S\}$ and $T := \emptyset$.
for each $v \in S$:


let $E_2 = \{(u,v) \in E : u \in S\}$.
if $E_2$ is empty and $T$ has no edge incident on $V$, go to the next iteration of the loop marked (*).
if $E_2$ is non-empty:


choose a non-empty subset $E_3$ of $E_2$.
set $T := T \cup E_3$ and $E_1 := E_1 \setminus E_2$.


if the graph $(S,T)$ with vertex set $S$ and edge set $T$ is connected, output it




I don't know how to guarantee polynomial delay, but this might be fine for your particular application.